Thales Macedo Garitezi
ec4f462684
refactor: apply review requests
2024-06-17 10:39:32 -03:00
Thales Macedo Garitezi
1464094967
test: attempt to fix flaky test
...
```
%%% emqx_persistent_session_ds_SUITE ==> t_session_discard_persistent_to_persistent: FAILED
%%% emqx_persistent_session_ds_SUITE ==> {noproc,{gen_server,call,[snabbkaffe_collector,flush_trace,infinity]}}
```
2024-06-17 10:34:57 -03:00
Ilia Averianov
420cd84cf1
Merge pull request #13273 from savonarola/0617-fix-url-parse-5.7
...
fix(auth,http): improve URI handling
2024-06-17 16:32:51 +03:00
Thales Macedo Garitezi
b71212b022
refactor: apply review comments
2024-06-17 09:40:33 -03:00
Thales Macedo Garitezi
f5eb3e7471
Merge pull request #13250 from thalesmg/ds-singleton-m-20240613
...
feat: enforce singleton discovery strategy when using DS `builtin_local` backend
2024-06-17 09:34:05 -03:00
Ilya Averyanov
19c9f0d76f
chore(auth,http): cache REs for parsing URIs
2024-06-17 14:42:29 +03:00
Ilya Averyanov
f7ac829f28
fix(auth,http): improve URI handling
2024-06-17 14:42:29 +03:00
Serge Tupchii
a905a6048c
chore(clusterlink): rename link `upstream` field to `name`
2024-06-17 12:24:51 +03:00
Serge Tupchii
a95a08efd3
test(clusterlink): add more test cases
2024-06-17 12:24:51 +03:00
Serge Tupchii
44c37571cc
fix(clusterlink): ignore not_registered error
2024-06-17 12:24:51 +03:00
Serge Tupchii
00f912928f
fix: fix emqx_external_broker:forward/1 spec
2024-06-17 12:24:51 +03:00
Andrew Mayorov
179870c573
chore: remove author-specific gitignore stuff
...
Which was accidentally committed.
2024-06-17 12:24:51 +03:00
Andrew Mayorov
ed16ff07df
refactor(broker): simplify external broker behaviour
2024-06-17 12:24:51 +03:00
Serge Tupchii
d282c61120
feat(clusterlink): update only necessary resources when a link config is changed
2024-06-17 12:24:50 +03:00
Serge Tupchii
5304ca1563
fix(clusterlink): add emqx_cluster_link app to mix.exs/rebar.config.erl
2024-06-17 12:24:47 +03:00
Serge Tupchii
ff16521d4f
fix(clusterlink): add schema descriptions, fix dialyzer warnings, add resource_opts
2024-06-17 12:23:52 +03:00
Serge Tupchii
94e81ba812
feat(clusterlink): implement actor config handler
2024-06-17 12:23:52 +03:00
Serge Tupchii
c871b37453
fix(clusterlink): add link topics schema validator
2024-06-17 12:23:52 +03:00
Andrew Mayorov
780a0bf807
fix(cluster-link): clear exit signal of failed-to-connect client
2024-06-17 12:23:52 +03:00
Andrew Mayorov
d0df4de2a3
test(cluster-link): add e2e replication actor GC testcase
2024-06-17 12:23:52 +03:00
Andrew Mayorov
c4840b30d2
fix(cluster-link): deduplicate routes down to dest cluster
2024-06-17 12:23:52 +03:00
Andrew Mayorov
ede35df24a
fix(cluster-link): cancel heartbeats on client down
2024-06-17 12:23:52 +03:00
Andrew Mayorov
e0604e3af6
fix(cluster-link): anticipate clients may occasionally retry
2024-06-17 12:23:52 +03:00
Andrew Mayorov
0219b8bd4d
feat(cluster-link): add simple replication actor GC process
2024-06-17 12:23:52 +03:00
Andrew Mayorov
7fccb5dbc9
test(topic): add more `intersection/2` testcases
2024-06-17 12:23:52 +03:00
Andrew Mayorov
7b8f466adf
feat(topic): avoid `lists:reverse` when intersecting
2024-06-17 12:23:52 +03:00
Andrew Mayorov
24be189728
fix(topic): respect special topic rules when intersecting
2024-06-17 12:23:51 +03:00
Andrew Mayorov
de1ac131f7
test(cluster-link): fix test suite setup
2024-06-17 12:23:51 +03:00
Serge Tupchii
58eaf07627
fix(clusterlink): valide config to disallow duplicated cluster links
2024-06-17 12:23:51 +03:00
Andrew Mayorov
54d51d0982
test(cluster-link): draft basic integration test suite
2024-06-17 12:23:51 +03:00
Andrew Mayorov
e9c24090d4
fix(cluster-link): avoid starting ps syncer if persistence disabled
2024-06-17 12:23:51 +03:00
Andrew Mayorov
036c7e8492
test(cluster-link): adapt extrouter testsuite to new APIs
2024-06-17 12:23:51 +03:00
Andrew Mayorov
45eda4f3b9
fix(cluster-link): adapt heartbeat / reincarnation handling to new API
2024-06-17 12:23:51 +03:00
Andrew Mayorov
43d114546c
feat(cluster-link): preserve replication actor state in pdict
2024-06-17 12:23:51 +03:00
Andrew Mayorov
5771a41a32
fix(cluster-link): ensure replication actor bootstraps do heartbeats
2024-06-17 12:23:51 +03:00
Andrew Mayorov
d4b449c6e1
feat(cluster-link): implement replication actor heartbeats
2024-06-17 12:23:51 +03:00
Serge Tupchii
faa4420e1f
fix(clusterlink): improve actor error handling
...
Add status and error reason to the actor state, report alarms.
2024-06-17 12:23:51 +03:00
Serge Tupchii
21711c6e0d
fix(clusterlink): communicate bootstrap requirements via actor handshake
...
`session_present` flag is not reliable to decide whether bootstrap is needed if durable sessions is enabled.
In this case, the client session may survive cluster restart while all the external routes are lost, as they are not persistent.
2024-06-17 12:23:51 +03:00
Serge Tupchii
d5e82cdfac
refactor(clusterlink): avoid unnecessary `maybe_` external_broker CB names
2024-06-17 12:23:51 +03:00
Serge Tupchii
d578ac3f9e
fix(clusterlink): match correct timer ref in router actor
2024-06-17 12:23:51 +03:00
Serge Tupchii
b1aeb35370
feat(clusterlink): implement actor init handshake
2024-06-17 12:23:51 +03:00
Serge Tupchii
ac19cf89df
chore(clusterlink): remove code related to the rejected coordinator-based implementation
2024-06-17 12:23:51 +03:00
Serge Tupchii
e26e7acaa1
refactor(clusterlink): use `emqx_bridge_mqtt_lib:clientid_base/1` to construct routesync client id
2024-06-17 12:23:51 +03:00
Serge Tupchii
e7305c62ee
feat(clusterlink): replicate shared subscription and persistent session routes
2024-06-17 12:23:51 +03:00
Serge Tupchii
f036b641eb
feat(clusterlink): integrate node local routes replication and message forwarding
2024-06-17 12:23:51 +03:00
Serge Tupchii
7df91d852c
feat(clusterlink): integrate node local syncer/actor implementation
...
- support multiple cluster links in extrouter
- apply extrouter ops on 'message.publish' hook
- fix several minor bugs
2024-06-17 12:23:51 +03:00
Andrew Mayorov
cbd01ae818
feat(clusterlink): add node-local route sync actor implementation
2024-06-17 12:23:51 +03:00
Andrew Mayorov
7b95273218
feat(routesync): make syncer a bit more generic and reusable
2024-06-17 12:23:51 +03:00
Andrew Mayorov
5bd9ee5c7f
feat(utils): add `emqx_utils_ets:keyfoldl/3` function
...
Designed to be used with `bag` / `duplicate_bag` tables.
2024-06-17 12:23:51 +03:00
Andrew Mayorov
4097585f5d
fix(clusterlink): ensure extrouter works on replicants
...
This is sort of a quick fix to make things safe, but it will likely be
a subject to the same drawbacks as the regular router in high-latency
deployments: reduced throughput.
2024-06-17 12:23:51 +03:00