Handle retry for redis io flow - #274
Conversation
|
Hi @khorshuheng. Thanks for your PR. I'm waiting for a gojek member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
|
/ok-to-test |
|
/test test-golang-sdk |
There was a problem hiding this comment.
Suggest some comments to the new proto fields.
| int32 backoff_ms = 3; | |
| // Optional. The number of milliseconds to wait before retrying failed Redis connection. | |
| // By default, Feast uses exponential backoff policy and "backoff_ms" sets the initial wait duration. | |
| int32 backoff_ms = 3; | |
| // Optional. Maximum total number of retries for connecting to Redis. Default to zero retries. | |
| int32 max_retries = 4; |
There was a problem hiding this comment.
Just nitpick, the initial backoff duration could be renamed as follow
int32 initial_backoff_ms = 3;
So that the generated code will be clearer
There was a problem hiding this comment.
@davidheryanto @pradithya Thanks for the suggestion, i have implemented the change as suggested.
|
Looks great! |
Thanks! There are a few things which needs to be discussed before the implementation:
FailedRedisMessage
|
We currently write deadletters to BQ using the WriteFailedElementToBigQuery PTransform, we can extend it to other types of sinks (kafka, file, etc) later. As for the failed element message, just key/value bytes together with the error message and timestamp would be great! |
1db929d to
51c5ec2
Compare
f44241b to
a97fdc2
Compare
I have implemented this. Though, as discussed earlier, the bytes value are currently represented as string, due to the BigQuery schema. |
|
/lgtm |
|
/approve |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: khorshuheng, woop The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
/retest |
|
@khorshuheng Happy to merge this in if we can resolve the conflicts. |
a97fdc2 to
b8c3b30
Compare
|
/retest |
|
/lgtm |
Currently, the Redis write to the serving store does not handle transient connection failures, which results in data loss. This PR augment the pipeline to retry the connection up to a certain maximum limit. The limit and backoff time are configurable via RedisConfig.