-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor the Run upload process #2172
base: master
Are you sure you want to change the base?
Conversation
40b5218
to
95d8918
Compare
The behavior will change as follows:
Given that the |
f1661fe
to
5fdd97d
Compare
Given that with the new implementation, uploading a run is not fully synchronous anymore, I had to change some tests in order to explicitly recalculate the labelValues. Moreover I create a different in memory resource for AMQ such that we can skip processing events in the AMQ broker if not actually required, especially because they will throw errors as they are not running in the same transaction of the test |
Refactor the process such that runs and related datasets get created/persisted synchronously whereas the datasets processing (label values calculation and so on) is deferred to the async process by making use if the dataset-even queue Signed-off-by: Andrea Lamparelli <a.lamparelli95@gmail.com>
Signed-off-by: Andrea Lamparelli <a.lamparelli95@gmail.com>
With this resource we can have more control over async processing and even avoid unnecessary async processing when not needed Signed-off-by: Andrea Lamparelli <a.lamparelli95@gmail.com>
e692b8a
to
6288578
Compare
wdym by this? what happens in the event of a crash? we have an external amq instance to persist any messages that have not been processed so we can recover in the event of a crash. why do we need an in-memory resource? |
Sorry, I should have mentioned that is just for testing purposes, see horreum-backend/src/test/java/io/hyperfoil/tools/horreum/test/AMQPInMemoryResource.java such that all tests that do not require or that they don't check async processing can use that. This will avoid to see some exceptions during the tests that are "expected" but that can cause confusion |
ok, thanks for clarifying |
Refactor the process such that runs and related datasets get created/persisted synchronously whereas the datasets processing (label values calculation and so on) is deferred to the async process by making use if the dataset-even queue
Fixes Issue
Fixes #1976
Changes proposed
This change proposes to slightly update how the Run upload is managed, moving from a completely sync process to a hybrid one.
The process can be summarized as follow:
dataset-event
queue to process label values (and change point detection and so on) asynchronously.TODOs/Open points:
202
if the process succeeded with therunId
that was created.[ ] Adapt the UInothing to do hereCheck List (Check all the applicable boxes)