-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
routerrpc: add a default value for timeout_seconds in SendPaymentV2 #9359
base: master
Are you sure you want to change the base?
routerrpc: add a default value for timeout_seconds in SendPaymentV2 #9359
Conversation
Important Review skippedAuto reviews are limited to specific labels. 🏷️ Labels to auto review (1)
Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
c5537ef
to
18d4ff0
Compare
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.
Thanks for the PR. A few suggestions to complete the change,
- we should update the
SendpaymentRequest
inrouter.proto
and make the fieldtimeout_seconds
optional, also need to update the docs there to make it clear that this field is now optional. - we then update both the
cli
and the RPC to not check the timeout value. - we should also update some of the itests to validate the new behavior that we don't check for timeout values, which can be any of the cases that use
TimeoutSeconds: 60
when making a payment, and we can simply remove it there to validate the new behavior.
lnrpc/routerrpc/router_server.go
Outdated
@@ -344,6 +344,11 @@ func (r *ServerShell) CreateSubServer(configRegistry lnrpc.SubServerConfigDispat | |||
func (s *Server) SendPaymentV2(req *SendPaymentRequest, | |||
stream Router_SendPaymentV2Server) error { | |||
|
|||
// Set payment request attempt timeout. | |||
if req.TimeoutSeconds == 0 { | |||
req.TimeoutSeconds = 60 |
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.
Think we should make this a constant var DefaultPaymentTimeout
and use it here.
Hey @yyforyongyu, thanks for the review! I made some modifications based on your feedback. Could you please check if everything is covered, or if I need to check anything further? |
cc: @yyforyongyu @guggero, just pinging again in case the last message was missed. |
|
lnrpc/routerrpc/router.proto
Outdated
An optional upper limit on the amount of time we should spend when | ||
attempting to fulfill the payment. This is expressed in seconds. If we | ||
cannot make a successful payment within this time frame, an error will be | ||
returned. This field must be non-zero. |
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.
we should also mention the default value of 60s is used when the field is not set, and when setting the field, a value of 0 is not allowed, and we should change the below field to optional int32 timeout_seconds = 6
.
Then when we check it, we first check if the field is set by checking if it's nil, if set, we require it to be not zero, otherwise, use the default 60s.
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.
Since timeout_seconds
is of type int32
and not a pointer, its default value will be 0
if it is not set. Therefore, whether timeout_seconds
is not specified or explicitly set to 0
, I have implemented logic to default it to 60 seconds
.
Please let me know if there is anything else I need to address.
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.
Can you run make rpc
first? Then you'll know what i meant
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.
Done. Thanks for the help! I will make sure to learn from this and avoid making the same mistake in the future.
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.
Wanted to comment about backward compatibility of changing the behavior of the field. But doesn't seem to be an issue, according to this: https://stackoverflow.com/a/76375904
So that seems to be the right approach indeed for this situation.
7866d62
to
a6bd8c1
Compare
a6bd8c1
to
d858578
Compare
Signed-off-by: Nishant Bansal <[email protected]> routerrpc: update itests to validate default timeout_seconds Signed-off-by: Nishant Bansal <[email protected]>
d858578
to
2c4b55c
Compare
Hey @yyforyongyu, I’ve made the required modifications. Please take a look. |
@yyforyongyu: review reminder |
Hey @yyforyongyu, just following up to see if there are any additional reviews pending on this PR? |
Change Description
Description of change / link to associated issue.
This PR introduces a default value of 60 seconds for the
timeout_seconds
field in theSendPaymentV2
RPC call in therouterrpc.SendPaymentRequest
.Fixes: #9282
Steps to Test
Test with explicit timeout_seconds values:
Test without timeout_seconds:
Pull Request Checklist
Testing
Code Style and Documentation
[skip ci]
in the commit message for small changes.📝 Please see our Contribution Guidelines for further guidance.