Commit Graph

7749 Commits

Author SHA1 Message Date
Andrew Mayorov
7e7b50c5ba
refactor(mqttbridge): move into separate application 2023-05-30 17:56:34 +03:00
Thales Macedo Garitezi
57aacb471c fix(rule_engine_api): don't crash when formatting empty metrics
Fixes https://emqx.atlassian.net/browse/EMQX-10073
Fixes https://github.com/emqx/emqx/issues/10714#issuecomment-1567987664

Similar issue to https://github.com/emqx/emqx/pull/10743, but on the
rule engine API.
2023-05-30 11:54:27 -03:00
Thales Macedo Garitezi
a28580248a test(exclusive_sub): fix test flakiness
https://github.com/emqx/emqx/actions/runs/5115608275/jobs/9208594481?pr=10864#step:8:735

```
  Testing lib.emqx.emqx_access_control_SUITE: TEST COMPLETE, 4 ok, 0 failed of 4 test cases

  Testing lib.emqx.emqx_exclusive_sub_SUITE: Starting test, 5 test cases

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  Error detected: {'EXIT',{shutdown,econnrefused}}
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Testing lib.emqx.emqx_exclusive_sub_SUITE: *** FAILED test case 1 of 5 ***
  %%% emqx_exclusive_sub_SUITE ==> t_allow_normal_sub: FAILED
  %%% emqx_exclusive_sub_SUITE ==> {'EXIT',{shutdown,econnrefused}}

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  emqx_exclusive_sub_SUITE:t_clean_session failed on line 128
  Reason: {badmatch,{error,econnrefused}}
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Testing lib.emqx.emqx_exclusive_sub_SUITE: *** FAILED test case 2 of 5 ***
  %%% emqx_exclusive_sub_SUITE ==> t_clean_session: FAILED
```

To reproduce:

```
make ct-suite SUITE=apps/emqx/test/emqx_access_control_SUITE.erl,apps/emqx/test/emqx_exclusive_sub_SUITE.erl
```
2023-05-30 11:23:17 -03:00
Andrew Mayorov
ebd612b194
chore: bump applications versions
* emqx_connector 0.1.25
* emqx_rule_engine 5.0.19
* emqx_ee_bridge 0.1.15
2023-05-30 17:21:45 +03:00
Andrew Mayorov
eed9358abd
chore: bump ecpool to 0.5.4
With fixed typings and empty pool handling.
2023-05-30 17:21:45 +03:00
Andrew Mayorov
a5fc26736d
refactor(mqttconn): split ingress/egress into 2 separate pools
Each with a more refined set of responsibilities, at the cost of slight
code duplication. Also provide two different config fields for each pool
size.
2023-05-30 17:21:44 +03:00
Andrew Mayorov
c7528e9b35
feat(mqttconn): add pool_size config parameter
That currently tunes the number of MQTT clients employed both for
subscriptions (if shared subscription is used) and for publishing to
a remote broker.
2023-05-30 17:21:44 +03:00
Andrew Mayorov
6e97dffdb8
feat(mqttconn): deprecate mode config parameter
It adds no value: the only mode was `cluster_shareload` and we just as
well can decide to "share" the load across cluster just by looking if
the remote topic is shared subcription filter or not.
2023-05-30 17:21:44 +03:00
Thales Macedo Garitezi
cb7929a2fc test(broker): attempt to reduce flakiness 2023-05-30 11:12:18 -03:00
Thales Macedo Garitezi
26992e9d98 test(banned): attempt to improve flaky test 2023-05-30 11:08:31 -03:00
Thales Macedo Garitezi
04bd39861d chore: bump app vsns 2023-05-30 11:08:20 -03:00
JianBo He
a132df5568 fix(coap): to better handle coap requests in connection mode
Fixes for connection deletion and message publishing requests not taking effect
issues once the connection has been created in a different UDP port
first.
2023-05-30 21:48:57 +08:00
JianBo He
48c53d8b32 chore: add emqx_management_proto_v4 2023-05-30 21:46:33 +08:00
Thales Macedo Garitezi
6b5b9fc8b8
Merge pull request #10864 from thalesmg/fix-flaky-channel-test-20230529
test(channel): fix flaky test
2023-05-30 10:18:47 -03:00
Thales Macedo Garitezi
5f6ff9144b
Merge pull request #10862 from thalesmg/fix-flaky-cassandra-test-v50
test(cassandra): attempt to fix flaky test
2023-05-30 10:02:14 -03:00
Thales Macedo Garitezi
9c3f838e14
Merge pull request #10841 from thalesmg/kafka-validate-key-v50
feat({kafka,pulsar}_producer): add validation for empty message key when strategy = key_dispatch
2023-05-30 09:37:15 -03:00
Kjell Winblad
a4fcc0dcb3 fix: password log leak in RabbitMQ bridge
This fixes a vulnerability in the RabbitMQ bridge, which could
potentially expose passwords to log files. This was accomplished by
initializing the encryption library specifically designed for RabbitMQ's
passwords. Consequently, passwords are no longer stored in unencrypted
format. As a result, they will no longer be visible as plain text in log
messages, thereby enhancing the system's security.

Fixes:
https://emqx.atlassian.net/browse/EMQX-9976
2023-05-30 14:36:02 +02:00
JianBo He
fc806c4acd test: fix failed tests 2023-05-30 20:15:49 +08:00
Thales Macedo Garitezi
75fcac9711
Merge pull request #10826 from thalesmg/test-partial-batch-expired-inflight-v50
test(buffer_worker): add assertion for inflight count after batch expiration
2023-05-30 09:05:59 -03:00
Thales Macedo Garitezi
5bcc28b8df
Merge pull request #10861 from thalesmg/fix-flaky-telemetry-test-v50
test(telemetry): fix flaky test
2023-05-30 09:05:28 -03:00
JianBo He
1e7872c319 feat: support kickout clients in batch 2023-05-30 19:58:40 +08:00
Zaiming (Stone) Shi
0f080cda66 chore: bump emqx_rule_engine app vsn 2023-05-30 13:50:36 +02:00
Andrew Mayorov
4e6269bedb
feat(mqttconn): subscribe each worker if shared subcription
Also rename `subscriptions` -> `ingress` and `forwards` -> `egress` for
consistency with the config schema.
2023-05-30 14:50:05 +03:00
Andrew Mayorov
81e78516aa
feat(mqttconn): employ ecpool instead of a single worker 2023-05-30 14:50:05 +03:00
Andrew Mayorov
6967f621d8
fix(mqttconn): unify error interpretation in sync/async modes
Also move this logic to the mqtt connector itself, in order to avoid
dealing with extra callback layer.
2023-05-30 14:50:05 +03:00
Andrew Mayorov
67d703f8c5
refactor(mqttconn): simplify mqtt connector
Inline `emqx_connector_mqtt_msg` module code into
`emqx_connector_mqtt_worker` module, since it's not really used
anywhere else and does not provide any reusable abstractions.
2023-05-30 14:50:05 +03:00
Andrew Mayorov
bd956d00b6
feat(mqttconn): stop using gproc in hot path
Also drop fiddling with `mountpoint` since this option seems not to be
used anywhere.
2023-05-30 14:50:05 +03:00
Andrew Mayorov
4da0d83faf
chore(mqttconn): remove dead code 2023-05-30 14:50:04 +03:00
Zaiming (Stone) Shi
aa096f496f
Merge pull request #10876 from zmstone/merge-release-51-back-to-master
Merge release 51 back to master
2023-05-30 13:49:21 +02:00
Kjell Winblad
5cfe04956d
Merge pull request #10858 from kjellwinblad/kjell/rule_engine_funcs/add_timezone_to_second/EMQX-10058
feat: add timezone_to_second/1 function to rule engine
2023-05-30 12:29:40 +02:00
Zaiming (Stone) Shi
d2ce7c22fd chore: bump app vsn, core app 'emqx' is now at 5.1 2023-05-30 11:32:18 +02:00
Zaiming (Stone) Shi
1e8ed89db8 Merge remote-tracking branch 'origin/master' into release-51 2023-05-30 11:29:44 +02:00
Zaiming (Stone) Shi
91cdc69976
Merge pull request #10867 from zmstone/0530-merge-release-50-to-master
0530 merge release 50 to master
2023-05-30 09:54:57 +02:00
Zaiming (Stone) Shi
367de2a2eb docs: update bpapi readme 2023-05-30 08:29:43 +02:00
Zaiming (Stone) Shi
941939f7d7 build: finalize 5.0.bpapi 2023-05-30 08:28:45 +02:00
Zaiming (Stone) Shi
3b8cba6ba0 chore: bump rlease versions 2023-05-30 08:28:45 +02:00
Zaiming (Stone) Shi
9529919046 chore: bump app versions 2023-05-30 08:08:29 +02:00
JimMoen
8569fac6eb
fix: make static_check happy 2023-05-30 14:00:20 +08:00
Zaiming (Stone) Shi
747eb6fcff Merge remote-tracking branches 'origin/release-50' and 'origin/master' into release-51 2023-05-30 07:54:34 +02:00
Zaiming (Stone) Shi
286eefb563 Merge remote-tracking branch 'origin/release-50' 2023-05-30 07:52:54 +02:00
JimMoen
909d348570
chore: fix spec typo 2023-05-30 11:31:37 +08:00
JimMoen
bb363e9b9e
chore: bump dependency vsn
* bump `snappyer` ~> 1.2.9
  - as dependency of `kafka_protocol` ~> 4.1.3
  - as dependency of `brod`

* bump `rocksdb` ~> 1.7.2-emqx-11
2023-05-30 11:11:30 +08:00
Thales Macedo Garitezi
1aff46b7c9 test(channel): fix flaky test 2023-05-29 19:04:48 -03:00
Thales Macedo Garitezi
bae00c909f test(cassandra): attempt to fix flaky test
```
=ERROR REPORT==== 29-May-2023::20:35:20.457796 ===
    id: <<"bridge:cassandra:emqx_bridge_cassandra_SUITE">>
    msg: unrecoverable_error
    reason: {8704,<<"Expected 8 or 0 byte long for date (4)">>}
=CRITICAL REPORT==== 29-May-2023::20:35:20.458850 ===
"check stage" failed: error
{assertMatch,[{module,emqx_bridge_cassandra_SUITE},
              {line,619},
              {expression,"Trace"},
              {pattern,"[ # { result := { ok , _Pid } } ]"},
              {value,[]}]}
Stacktrace: [{emqx_bridge_cassandra_SUITE,'-t_missing_data/1-fun-3-',1,
                 [{file,
                      "/emqx/apps/emqx_bridge_cassandra/test/emqx_bridge_cassandra_SUITE.erl"},
                  {line,619}]},
             {emqx_bridge_cassandra_SUITE,t_missing_data,1,
                 [{file,
                      "/emqx/apps/emqx_bridge_cassandra/test/emqx_bridge_cassandra_SUITE.erl"},
                  {line,607}]}]

=CRITICAL REPORT==== 29-May-2023::20:35:20.471872 ===
Check stage failed. Trace dump: "/emqx/_build/test/logs/ct_run.test@127.0.0.1.2023-05-29_20.34.32/snabbkaffe/1685392520460040358.log"

%%% emqx_bridge_cassandra_SUITE ==> tcp.sync.with_batch.t_missing_data: FAILED
%%% emqx_bridge_cassandra_SUITE ==> {{panic,#{msg => "Unexpected result",result => {error,check_stage_failed}}},
 [{emqx_bridge_cassandra_SUITE,t_missing_data,1,
                               [{file,"/emqx/apps/emqx_bridge_cassandra/test/emqx_bridge_cassandra_SUITE.erl"},
                                {line,624}]},
  {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1782}]},
  {test_server,run_test_case_eval1,6,[{file,"test_server.erl"},{line,1291}]},
  {test_server,run_test_case_eval,9,[{file,"test_server.erl"},{line,1223}]}]}
```
2023-05-29 18:19:26 -03:00
Thales Macedo Garitezi
fa508a95c1 test(telemetry): fix flaky test
```
%%% emqx_telemetry_SUITE ==>
Failure/Error: ?assertEqual(0, get_value ( num_clients , TelemetryData1 ))
  expected: 0
       got: 1
      line: 454
```
2023-05-29 18:09:35 -03:00
Thales Macedo Garitezi
67e182e0c9
Merge pull request #10813 from thalesmg/refactor-kafka-on-stop-v50
feat(kafka): ensure allocated resources are removed on failures
2023-05-29 16:49:29 -03:00
Kjell Winblad
354603da01 test: helper function was interpreted as a test function 2023-05-29 17:20:37 +02:00
Thales Macedo Garitezi
3edbad9f56 feat(pulsar_producer): add validation for empty message key when strategy = key_dispatch 2023-05-29 10:04:19 -03:00
Kjell Winblad
995025b572 feat: add timezone_to_second/1 function to rule engine
This commit adds the functions timezone_to_offset_seconds and its alias
timezone_to_second to the rule engine. As the names suggests, these
functions convert a timzone offset string such as "+02:00", "Z", "local"
to an integer representing how many seconds that the given timezone
differs from UTC. timezone_to_offset_seconds is the one of the two
functions that should be advertised while timezone_to_second in kept for
backwards compatibility with 4.X.

Fixes:
https://emqx.atlassian.net/browse/EMQX-10058
2023-05-29 14:30:43 +02:00
Zaiming (Stone) Shi
08c1d5e5ae test: stop testing i18n.conf 2023-05-29 14:22:23 +02:00
Zaiming (Stone) Shi
d014b80834 build: download zh translation from emqx-i18n.git 2023-05-29 14:22:23 +02:00
Thales Macedo Garitezi
79f6861499 chore: prepare to tag v5.0.26 2023-05-29 09:17:59 -03:00
Thales Macedo Garitezi
639feefab6 Merge remote-tracking branch 'origin/master' into tag-v5026 2023-05-29 09:15:48 -03:00
JimMoen
9526d080af
fix: override emqx_license is unnecessary
* continue #10820
2023-05-29 19:10:31 +08:00
JimMoen
adae1aec96
chore: fix typo for enterprise readme 2023-05-29 19:08:15 +08:00
JimMoen
6551eb21f2
Merge pull request #10851 from JimMoen/fix-bad-api-logging
fix: redact api request to hide auth token
2023-05-29 17:40:44 +08:00
JimMoen
e287cf9a09
Merge pull request #10820 from JimMoen/fix-license-checker-update
fix: reboot `emqx_license` app for join cluster
2023-05-29 17:40:29 +08:00
Andrew Mayorov
daa7eebc0f
Merge pull request #10843 from keynslug/fix/ft-prop-zerodiv
test(ft): ensure no division by zero in coverage proptest
2023-05-29 10:23:52 +03:00
zhongwencool
2b6d3bb748
Merge pull request #10833 from zhongwencool/telemtry-report
fix: only report enable authn/authz in telemetry
2023-05-29 15:14:36 +08:00
zhongwencool
1e986a7b93
Merge pull request #10847 from zhongwencool/telemetry-conf-update
feat: support emqx_conf:update([telemetry],Conf).
2023-05-29 15:14:16 +08:00
Zaiming (Stone) Shi
e6869a2904 chore: bump app vsn for emqx_machine 2023-05-29 09:04:17 +02:00
Zaiming (Stone) Shi
8e6dc29637 chore: bump release version to v5.0.26-alpha.1 2023-05-29 08:57:28 +02:00
Zaiming (Stone) Shi
25319c3151
Merge pull request #10839 from zmstone/0526-merge-release-50-to-master
0526 merge release 50 to master
2023-05-29 08:56:20 +02:00
Zhongwen Deng
8c814bc861 fix: only report enable authn/authz in telemetry 2023-05-29 14:17:46 +08:00
Zhongwen Deng
4dee1a2429 test: add more test for emqx_telemetry 2023-05-29 14:08:59 +08:00
JimMoen
6f90369429
fix: make dialyzer happy 2023-05-29 13:48:00 +08:00
JimMoen
cb05406a00
fix: reboot emqx_license app for join cluster 2023-05-29 13:47:46 +08:00
JimMoen
dcfe985ee9
fix: redact api request to hide auth token 2023-05-29 11:02:02 +08:00
某文
8ccee19aa5 feat: support emqx_conf:update([telemetry],Conf). 2023-05-28 22:54:35 +08:00
Zaiming (Stone) Shi
c2450d230d
Merge pull request #10605 from zmstone/0503-no-telemetry-app-for-ee
0503 refactoring: no telemetry app for ee
2023-05-27 10:57:15 +02:00
Thales Macedo Garitezi
d27f593309 test: fix flaky authn test 2023-05-26 16:44:00 -03:00
Andrew Mayorov
98ce7e8bbd
test(ft): ensure no division by zero in coverage proptest 2023-05-26 21:53:01 +03:00
Thales Macedo Garitezi
9b7e473cf6 feat(kafka_producer): add validation for empty message key when strategy = key_dispatch
Fixes https://emqx.atlassian.net/browse/EMQX-9979
2023-05-26 12:02:58 -03:00
Zaiming (Stone) Shi
fe81e9521a
Merge pull request #10600 from zmstone/0504-delete-statsd-all-together
0504 delete statsd all together
2023-05-26 16:29:59 +02:00
Zaiming (Stone) Shi
36e268c933 chore: bump app versions 2023-05-26 16:05:37 +02:00
Zaiming (Stone) Shi
cc5b4d3748 Merge remote-tracking branch 'origin/release-50' into 0526-ci-delete-otp-24-from-standalone-app-test 2023-05-26 15:58:16 +02:00
Zaiming (Stone) Shi
3595a86724 chore(emqx_telemetry): add registered process names to app info 2023-05-26 15:28:06 +02:00
Zaiming (Stone) Shi
d167d6dd41 chore(emqx_telemetry): update supervisor's child restart strategy 2023-05-26 15:28:06 +02:00
Zaiming (Stone) Shi
256e92f4e9 refactor: call emqx_telemetry_config:on_server_stop 2023-05-26 15:28:06 +02:00
Zaiming (Stone) Shi
6e2cde8224 refactor: delete emqx_statsd all together 2023-05-26 15:17:42 +02:00
Andrew Mayorov
45b128946a
Merge pull request #10825 from fix/EMQX-9991/bugs
fix(ft): avoid leaking secrets
2023-05-26 16:08:14 +03:00
Zaiming (Stone) Shi
7eb22e27c4 chore: bump release version to e5.0.4 2023-05-26 14:34:01 +02:00
Zhongwen Deng
9b6da3ff10 chore: bump hocon to 0.39.7 2023-05-26 19:00:58 +08:00
Zhongwen Deng
df4a0afdf5 fix: zones api default value 2023-05-26 18:59:38 +08:00
Zaiming (Stone) Shi
2d986140df chore: bump version to e5.0.4-rc.2 2023-05-26 12:01:10 +02:00
Andrew Mayorov
48858dee33
fix(s3): wrap S3 secrets during config load 2023-05-26 12:59:21 +03:00
Andrew Mayorov
3d428a2e0e
fix(ft-s3): rely on asynchronous upload abort
So that upload aborts would not block assemblers. This should not
affect the expected behavior since S3 API usually allows having
concurrent uploads, plus we couldn't really guarantee successful aborts
anyway.
2023-05-26 12:59:20 +03:00
Andrew Mayorov
cc3275b389
fix(ft): use conservative timeouts for S3 uploader calls 2023-05-26 12:59:20 +03:00
Andrew Mayorov
d36c2c2928
fix(ft-gc): ensure GC of already complete transfers 2023-05-26 12:59:20 +03:00
Andrew Mayorov
75cf562c90
fix(ft): tune some logging levels 2023-05-26 12:59:20 +03:00
Andrew Mayorov
3278158c66
fix(ft): disable ipv6_probe by default for S3 clients
It's often demonstrates degraded performance on common setups, e.g.
containers with virtualized network interfaces.
2023-05-26 12:59:20 +03:00
Zaiming (Stone) Shi
17f6c58f7b fix(telemetry): no default value for telemetry.enable in schema
the default value is computed from version string
2023-05-26 11:58:58 +02:00
Zaiming (Stone) Shi
dfc11e57d3 chore: delete telemetry.enable from enterprise.conf
telemetry is now not included in enterprise edition
2023-05-26 11:58:58 +02:00
Zaiming (Stone) Shi
ee122155f1 docs: fix spellcheck for telemetry app 2023-05-26 08:44:19 +02:00
Zaiming (Stone) Shi
772a4575ca
Merge pull request #10821 from thalesmg/fix-webhook-bridge-req-timeout-r50
fix(webhook): keep `resource_opts.request_timeout` for webhook bridge (r5.0)
2023-05-26 08:39:00 +02:00
JimMoen
a3b77563ba
fix: make static check happy 2023-05-26 10:34:15 +08:00
JimMoen
1ba65539c6
chore: refine traces command usage 2023-05-26 09:48:56 +08:00
JimMoen
0788f2f197
fix: emqx_ctl traces ... command args
* use second time as trace `start_at` and `end_at`
* default trace time duration 30min to same as api created
* prevent format line broken
2023-05-26 09:48:56 +08:00
Zaiming (Stone) Shi
407cab220b
Merge pull request #10760 from paulozulato/fix-failure-joining
fix: avoid error 500 when node is re-joining cluster
2023-05-26 03:08:17 +02:00
Thales Macedo Garitezi
32e6213ce3 fix(resource_manager_sup): use one_for_one instead of simple_one_for_one
Using `simple_one_for_one` has a potential race condition issue where
we read the PID of the resource manager before trying to remove a
resource, and then that PID changes because it was either dead at
first, or it crashed and changed, and later we use this stale PID to
try to remove it from the supervisor.  Under such circumstances, the
restarting child might linger in the supervisor, leaking resources.

By using the resource ID itself as a child ID (and using `one_for_one`
restart strategy), we ensure the child is truly removed.
2023-05-25 18:07:43 -03:00