srkukarni commented on a change in pull request #7509:
URL: https://github.com/apache/pulsar/pull/7509#discussion_r453337435
##########
File path:
pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java
##########
@@ -686,10 +686,33 @@ public void updateFunctionOnWorkerLeader(final String
tenant,
}
// Redirect if we are not the leader
+ boolean shouldRedirect = false;
if (!worker().getLeaderService().isLeader()) {
WorkerInfo workerInfo =
worker().getMembershipManager().getLeader();
- URI redirect =
UriBuilder.fromUri(uri).host(workerInfo.getWorkerHostname()).port(workerInfo.getPort()).build();
- throw new
WebApplicationException(Response.temporaryRedirect(redirect).build());
+ // there might be a delay between when the leader service for this
worker gets triggered "becomeActive"
Review comment:
I think we should adopt more simple workflow.
1. LeaderService.isLeader() is set only after we have fully become leader.
2. If we are leader, do the request ourselves
3. else re-direct to the leader
There will be a case that we might redirect to a leader who is not ready. In
that case just return error to the user asking him to retry again is perfectly
valid.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]