Skip to content
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

Use Recordbatch with TaskResult #10188

Merged
merged 4 commits into from
Aug 26, 2022
Merged

Conversation

Zelldon
Copy link
Member

@Zelldon Zelldon commented Aug 25, 2022

Description

Prework was to create an inverse static EventRegistry -> TypeRegistry to reuse this in the different result builders. This allows getting the value type for a certain record class.

The RecordBatch is now part of the TaskResult. The RecordBatch is filled with the TaskResultBuilder and returned with
the TaskResult. The RecordBatch is written to the Dispatcher in the ProcessingScheduleService.

After migrating to the RecordBatch we were able to delete writeRecordsToStream, which further reduce the dependencies. For example Backup module no longer depends on logstream.

Next step: Migrate the response writing to record batch, this allows to remove further dependencies.

Related issues

related #10001

Definition of Done

Not all items need to be done depending on the issue and the pull request.

Code changes:

  • The changes are backwards compatibility with previous versions
  • If it fixes a bug then PRs are created to backport the fix to the last two minor versions. You can trigger a backport by assigning labels (e.g. backport stable/1.3) to the PR, in case that fails you need to create backports manually.

Testing:

  • There are unit/integration tests that verify all acceptance criterias of the issue
  • New tests are written to ensure backwards compatibility with further versions
  • The behavior is tested manually
  • The change has been verified by a QA run
  • The impact of the changes is verified by a benchmark

Documentation:

  • The documentation is updated (e.g. BPMN reference, configuration, examples, get-started guides, etc.)
  • New content is added to the release announcement
  • If the PR changes how BPMN processes are validated (e.g. support new BPMN element) then the Camunda modeling team should be informed to adjust the BPMN linting.

Please refer to our review guidelines.

Adding an additional inverse map allows us to reuse that map on multiple
places, where we need to ValueType for a corresponding class.
The RecordBatch is filled with the TaskResultBuilder and returned with
the TaskResult.

The RecordBatch is written to the Dispatcher in the
ProcessingScheduleService.
This allows to further reduce the dependency from the LogStreamWriters
@github-actions
Copy link
Contributor

Test Results

   852 files  ±    0     852 suites  ±0   1h 40m 16s ⏱️ - 6m 34s
6 421 tests  - 277  6 409 ✔️  - 277  12 💤 ±0  0 ±0 
6 605 runs   - 277  6 593 ✔️  - 277  12 💤 ±0  0 ±0 

Results for commit 37bf2f5. ± Comparison against base commit 7d971cd.

Copy link
Contributor

@deepthidevaki deepthidevaki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for removing logstream writer from the api 🚀

@Zelldon
Copy link
Member Author

Zelldon commented Aug 26, 2022

bors r+

@zeebe-bors-camunda
Copy link
Contributor

Build succeeded:

@zeebe-bors-camunda zeebe-bors-camunda bot merged commit 95d5a16 into main Aug 26, 2022
@zeebe-bors-camunda zeebe-bors-camunda bot deleted the zell-recordbatch-task branch August 26, 2022 07:42
zeebe-bors-camunda bot added a commit that referenced this pull request Aug 26, 2022
10191: Handle append error differently based on ResultBuilder r=Zelldon a=Zelldon

## Description

:x: Blocked by #10188 

This PR adds Either to the RecordBatch as return value. This allows to handle the error case differently. For example in the Processing right now we want to throw an exception, but later this can also handled differently which is why we added here a separate Method on the ProcessingResultBuilder. This is discussable whether we already want that.

What we need and want is to being able to handle failed appends in the consumers of the ProcessingScheduleService. Means at the TaskResultBuilder we want to now whether it was successful or not and just stop to append more records. This is slightly similar to how we did it before. 

This fixes a critical bug #10147

<!-- Please explain the changes you made here. -->

## Related issues

<!-- Which issues are closed by this PR or are related -->

closes #10147
related #10001 



Co-authored-by: Christopher Zell <zelldon91@googlemail.com>
zeebe-bors-camunda bot added a commit that referenced this pull request Aug 26, 2022
10196: Introduce ProcessingResponse r=Zelldon a=Zelldon

## Description

blocked by #10191 ✅ 
blocked by #10188 ✅ 

Introduce the ProcessingResponse, which encapsulates the information of the Record which should be send as response on a user command and the request- and streamId which identifies the request.

The ProcessingResponse usage replaces the usage of the CommandResponseWriter, and deletes several now unused code.

<!-- Please explain the changes you made here. -->

## Related issues

<!-- Which issues are closed by this PR or are related -->

closes #10001 



Co-authored-by: Christopher Zell <zelldon91@googlemail.com>
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.

None yet

2 participants