Make field-generation race reproducible with deterministic interleaving test#1233
Make field-generation race reproducible with deterministic interleaving test#1233Copilot wants to merge 16 commits into
Conversation
Agent-Logs-Url: https://github.com/quickfix-j/quickfixj/sessions/3cc2ab86-f818-4d6f-8294-e0d1805a7497 Co-authored-by: chrjohn <6644028+chrjohn@users.noreply.github.com>
|
@copilot please add logging output how many parallel tasks are used |
Agent-Logs-Url: https://github.com/quickfix-j/quickfixj/sessions/35104349-ab05-422d-861f-1bd35f967d72 Co-authored-by: chrjohn <6644028+chrjohn@users.noreply.github.com>
Implemented in commit |
|
@copilot make generator.parallelExecution true by default. |
Agent-Logs-Url: https://github.com/quickfix-j/quickfixj/sessions/3e8c2bde-9960-418c-9e64-f8f4d450726f Co-authored-by: chrjohn <6644028+chrjohn@users.noreply.github.com>
Done in commit |
|
@copilot parallel execution might work when calling main() of the code generator. However, it does not work when using the GenerateMojo. So the mojo needs the information for all possible executions for the various fix versions at once. Currently there are several executions in quickfixj-messages/quickfixj-messages-all/pom.xml |
Agent-Logs-Url: https://github.com/quickfix-j/quickfixj/sessions/ae17ca4b-feff-443e-a2d8-ade9e02e1fc9 Co-authored-by: chrjohn <6644028+chrjohn@users.noreply.github.com>
Implemented in commit |
|
@copilot looking good so far.
|
Agent-Logs-Url: https://github.com/quickfix-j/quickfixj/sessions/1dcb0259-f870-44c3-9304-d4eb7980b33b Co-authored-by: chrjohn <6644028+chrjohn@users.noreply.github.com>
Implemented in commit |
|
@copilot the test ParallelExecutionOptionTest.testParallelExecutionIsEnabledByDefault is flaky. It expects that the tasks always finish in the same order. Keep the assertions that verify:
|
Agent-Logs-Url: https://github.com/quickfix-j/quickfixj/sessions/58f57ec9-970d-4117-8c1f-67f4377c307c Co-authored-by: chrjohn <6644028+chrjohn@users.noreply.github.com>
|
@copilot |
Agent-Logs-Url: https://github.com/quickfix-j/quickfixj/sessions/2d153902-1e67-4c93-bb99-a2527772ff53 Co-authored-by: chrjohn <6644028+chrjohn@users.noreply.github.com>
Implemented in commit |
@copilot please change MessageCodeGenerator so that number of parallel threads can be optionally specified and use 16 parallel tasks in |
Agent-Logs-Url: https://github.com/quickfix-j/quickfixj/sessions/d36323a4-9bbd-4af6-b90a-3a610f390115 Co-authored-by: chrjohn <6644028+chrjohn@users.noreply.github.com>
... Implemented in commit |
|
@copilot |
Agent-Logs-Url: https://github.com/quickfix-j/quickfixj/sessions/5e22437f-c919-41cc-bd7b-3e321fd6465e Co-authored-by: chrjohn <6644028+chrjohn@users.noreply.github.com>
Implemented in commit |
|
@copilot please change the CI build script so that it parses the output on compilation error and does a simple "cat" on the reported file(s). E.g. the build output is like this: Then do a "cat" on the reported files into the build log. |
... Implemented in commit |
Field class corruption from concurrent writes to the same output path was hard to reproduce because the existing test was probabilistic and often ended in a valid “last writer wins” file. This PR makes the race reproducible and detectable with deterministic write interleaving.
Deterministic race reproduction in codegenerator tests
Minimal production seam for test-controlled output
MessageCodeGeneratorso tests can inject controlled writer behavior without changing generation logic.generateCodeFile(...)now delegates stream creation viacreateOutputStream(File).Stronger corruption assertion