Skip to content

Conversation

@zmstone
Copy link
Member

@zmstone zmstone commented Sep 22, 2025

No description provided.

zmstone and others added 30 commits December 16, 2024 15:47
In this commit, a new option `ipv6_probe` is added for
gen_tcp:connect API.
The option can either be a proplist boolean flag
or a timeout non-neg-integer or `infinity`
When this option is provided, gen_tcp will try to connect
the target with ipv6, then fallback to default options
if failed to connect.
When a new node is added to the mnesia cluster, it selects a random node
to copy the table from if no 'master' node is defined (set master node
is not mandatory).

by setting arg: 'copy_from_node', operator is now free to choice
which node to copy from.

default is 'undefined', means disable.

note, if the specified node is not in the candidates list, it will fallback to
default behavior.
Merge pull request #20 from emqx/mnesia-post-commit-hook-emqx-OTP-24.1.5
Merge pull request #25 from thalesmg/ocsp-stapling-tmg-otp24
They are legal `Address`es to connect to.
so the use is not forced to bloat the options with
public_key:cacerts_get()
Albeit there's already the `{repeat_until_ok, N}` TC property, it's arguably of reduced
use in a CI environment, as any failure will fail the whole suite, even if the final
execution succeeds.

Here we introduce a new kind of TC property: `{flaky, N}`, where `N` is a positive
integer.

It works similarly to `{repeat_until_ok, N}`: the TC is repeated up to `N` times until it
succeeds or retries are exhausted.  The TC gets the status of its last run: if it
eventually succeeded, it's considered a success.

Example usage:

```erlang
-module(my_SUITE).

all() ->
    %% This test case will be run up to 10 times.
    [{testcase, t_my_flaky_test, [{flaky, 10}]}].

t_my_flaky_test(Config) ->
    K = {?MODULE, ?FUNCTION_NAME},
    N = persistent_term:get(K, 0),
    case N > 5 of
        true ->
            ok;
        false ->
            persistent_term:put(K, N + 1),
            error(boom)
    end.
```

Execution logs:
```
Testing lib.my_SUITE: Stopping test case repeat operation: {flaky,10}
Testing lib.my_SUITE: TEST COMPLETE, 1 ok, 0 failed of 1 test cases
```

Note that, even though it actually ran 6 times, the final statistics are not duplicated.

The produced HTML logs do contain logs from all failures, nevertheless, for debugging
purposes.
sync(27.2): rebase emqx-OTP-27.1-2 stripped from irrelevant changes
…rnal-copies-otp27

250114 fix cstruct merge for external copies otp27
```
Error: Missing download info for actions/cache@6849a64
```

Apparently, something broke with v4.1.2, despite the commit SHA being correct...

actions/cache@6849a64
zmstone and others added 16 commits July 24, 2025 15:25
Previously any push would trigger the main workflow, now it is only
triggered when pushing a tag matching the pattern OTP-*

The build environment docker image build needs to know the merge base
in order to build on the correct major version, for PRs, the major
version is derived from maint-26 maint-27 etc; for tag pushes, it can be
derived from the tag string OTP-26.x.y etc; for branch pushes however,
it will result in using the `latest` docker image, as a result, it will
not be able to pass certain checks for OPT 27 when latest is on 28 or
later.
EMQX fork is maintained with a special branch naming convention.
The build script parses merge base branch of pattern maint-*,
this commit also adds emqx-OTP-*.

Without this fix, the github CI run image will have the latest
major version and leads to build failures. For example, when
sending a PR to emqx-OTP-27.x.y.z, the latest major is 29, some of
the beams are built on 29 and cannot be loaded on 27
…amp-to-27.3.4.2

stdlib: Fix zip to handle invalid dos timestamps
Optimization commit 28f7e80
broke max_fragment_length handling, that is the TLS sender
lost its knowledge of the maximum fragment length.

Make TLS sender process aware of it in the cases it is negotiated,
for default maximum we do not need to store it in the connection state.

Closes erlang#10191
…h-for-data

ssl: update `tls_sender` with `max_fragment_length`
…eader-if-too-large

fix(mqtt): allow application to check max packet size
@zmstone zmstone force-pushed the 250922-sync-OTP-27.3.4.2-to-28.1 branch 4 times, most recently from fdbe7d0 to c4aeaa6 Compare September 23, 2025 15:57
This reverts commit 2023887.
The fix only worked by chance, because often the remaining bytes
are not valid MQTT packets hence result in a socket close before
application can send the DISCONNECT packet.
Revert "fix(mqtt): allow application to check max packet size"
@zmstone zmstone marked this pull request as draft September 30, 2025 06:20
@zmstone zmstone marked this pull request as ready for review October 6, 2025 18:30
@zmstone zmstone merged commit 3fe4c9f into emqx-OTP-28.1 Oct 7, 2025
56 of 58 checks passed
@zmstone zmstone deleted the 250922-sync-OTP-27.3.4.2-to-28.1 branch October 7, 2025 09:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants