-
Notifications
You must be signed in to change notification settings - Fork 0
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
feat: ADR-038: State change indexing with Kafka #2
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall this looks good ... one question I have is should the kafka plugin be a default case for these examples or not. A smaller and simplified logger output that goes to trace might be the best for a default case with the file and kafka configurations provided as "commented out alternates" in order to streamline size/complexity...
@@ -276,6 +276,10 @@ func (fss *FileStreamingService) Close() error { | |||
return nil | |||
} | |||
|
|||
func (fss *FileStreamingService) ListenSuccess() <-chan bool { | |||
panic("implement me") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
!!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just making the compiler happy.
That makes sense. I'll work on a plugin that sends it to trace. |
@iramiller Added a |
That trace listener looks like a great default case for users. The simplest possible test case. |
Description
closes: #XXXX
Description
closes: #XXXX
This PR introduces the plugin architecture and an implementation of the StreamingService interface that writes out to Kafka. This work is part of ADR-038
The current implementation writes data out to a single topic with only one partition. This is so we can maintain order of messages. Each message is accompanied by a key that indicates the block number and the type of message.
block-{n}-begin-req
block-{n}-begin-state-change-{i}
block-{n}-begin-res
block-{n}-tx-{i}-req
block-{n}-tx-{i}-state-change-{i}
block-{n}-tx-{i}-res
block-{n}-end-req
block-{n}-end-state-change-{i}
block-{n}-end-res
How data is saved to a topic:
Current Limitations:
ADR-038 - State listening occurs in real time. This push (fire-and-forget) may lead to a degradation in performance when listeners are unable to keep up with events and start to fall behind. In addition, listeners will missed state change events in the following two scenarios:
Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.
docs/
) or specification (x/<module>/spec/
)godoc
comments.Unreleased
section inCHANGELOG.md
Files changed
in the Github PR explorerCodecov Report
in the comment section below once CI passes