Using just `-[0-9]+` requires further changes to the parser in `emqx_release`, and might
also cause problems with Elixir's `Version.parse` depending on the suffix.
In order to avoid forgetting to add an application to
`emqx_machine_boot:sorted_reboot_apps`, this script checks for any calls to
`mria:create_table` in all EMQX applications and checks it against said function in
`emqx_machine_boot`.
Example run:
```
ͳ scripts/check_missing_reboot_apps.exs --profile emqx-enterprise
Some applications are missing from `emqx_machine_boot:sorted_reboot_apps/0`!
Missing applications:
* emqx_durable_storage
* emqx_ee_schema_registry
Hint: maybe add them to `emqx_machine_boot:basic_reboot_apps_edition/1`
Applications that call `mria:create_table` need to be added to that list;
otherwise, when a node joins a cluster, it might lose tables.
```
Example problem: https://github.com/emqx/emqx/pull/11242
Sometimes, the generated cookie could be interpret by erlang as a
flag (e.g.: `+8w7uIsgUeG80c/ZgUDD9g==`) if not escaped properly,
causing the start up to fail.
See:
https://emqx.atlassian.net/wiki/spaces/P/pages/612368639/open+e5.1+remove+auto+restart+interval+from+buffer+worker+resource+options
Current problem:
In 5.0.x, we have two timer options that control the state changing of buffer worker
resources: auto_restart_interval and health_check_interval.
- auto_restart_interval controls how often the resource attempts to transition from
disconnected to connected.
- health_check_interval controls how often the resource is checked and potentially moved
from connected to disconnected or connecting.
The existence of two independent timers for very similar purposes is confusing to users,
QA and even developers. Also, an intimately related configuration is request_timeout,
which can interact badly with auto_restart_interval if the latter is poorly configured:
requests may always expire if request_timeout < auto_restart_interval and if the resource
enters the disconnected state. For health_check_interval, we attempt to derive a sane
default that gives requests a chance to retry (if request timeout is finite, then the
resource retries requests with a period of min(health_check_interval, request_timeout /
3).
Another problem with the separate auto_restart_interval is that its default value (60 s)
is too high when compared to the default request timeout and health check, leading to the
problems described above if not tuned.
Proposed solution:
We propose to drop auto_restart_interval in favor of health_check_interval, which will be
used for both disconnected -> connected and connected -> {disconnected, connecting}
transition checks. With that, the resource will attempt to reconnect at the same interval
as the health check, which currently is 15 s.
Also, as two smaller changes to accompany this one:
- Increase the default request_timeout from 15 s to 45 s.
- Rename request_timeout to request_ttl.
Prints helpful message when schema.json does not exist, as otherwise
the "file" will be mounted as an empty directory inside the
spellchecker container.
Only the first `-` in ERE need escaping to ensure it's not a command
option for `grep`.
The fix also tested on BSD grep 2.6 and works well.
More details:
https://lists.gnu.org/archive/html/info-gnu/2022-09/msg00001.html
> Regular expressions with stray backslashes now cause warnings, as
their unspecified behavior can lead to unexpected results.
For example, '\a' and 'a' are not always equivalent
<https://bugs.gnu.org/39678>.
* master: (194 commits)
fix(limiter): update change && fix deprecated version
chore: update changes
perf(limiter): simplify the memory represent of limiter configuration
ci(perf test): update tf variable name and set job timeout
ci: fix artifact name in scheduled packages workflow
fix: build_packages_cron.yaml workflow
ci: move scheduled builds to a separate workflow
build: check mnesia compatibility when generating mria config
docs: fix a typo in api doc description
feat(./dev): use command style and added 'ctl' command
test: fix delayed-pubish test case flakyness
refactor: remove raw_with_default config load option
chore: add changelog for trace timestrap
feat: increase the time precision of trace logs to microseconds
chore: make sure topic_metrics/rewrite's default is []
docs: Update changes/ce/perf-10417.en.md
chore: bump `snabbkaffe` to 1.0.8
ci: run static checks in separate jobs
chore(schema): mark deprecated quic listener fields ?IMPORTANCE_HIDDEN
chore: remove unused mqtt cap 'subscription_identifiers'
...