You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Believed root issue
Invoking dl.fullBlock adds blocks to a queue processed in a different channel. Since dl.fullBlock does not wait for async processing to complete, it creates a data race when its argument (callTxGroup) is later modified by the test (ln 1818).
Proposed resolution
In eval_blackbox_test.go, modify endBlock to await a signal that block processing is complete (e.g. committedUpTo).
The enclosing method, syncer is referenced by the data race stacktrace.
The syncer channel writes the block's transactions into the database. The write explains why msgpack Transaction serialization appears in the data race stacktrace.
The test does not await block write completion. The next test step modifies a transaction (callTxGroup[0].ApplicationArgs[0][1] = 1) that might not yet be written in syncer.
Alternative - Rather than awaiting block write completion, a unique callTxGroup can be used for each block operation. The approach addresses the issue, but feels counter to prevailing Go language conventions.
Problem
From https://app.circleci.com/pipelines/github/algorand/go-algorand/8335/workflows/26741401-daf2-4ab0-be50-9cd00b6ae547/jobs/150292/parallel-runs/3:
Solution
If no root cause can be identified, removing
t.Parallel()
will fix the build.Dependencies
Urgency
The text was updated successfully, but these errors were encountered: