|
The split command may return an error to the user when the execution succeeds.
That's an example:
- User sends split command to the router.
- Router processes the user info and gets the chunk range to be splitted and the split points.
- Router sends _configsvrCommitChunkSplit command to the config server with the info processed.
- Config server succeeds but the router doesn't receive the response.
- Router retries _configsvrCommitChunkSplit command.
- Config server returns an error because it can't find a chunk within the given range since it was already splitted. (v6.0 sends another error, but the result is the same).
- Router returns an error to the user.
To enable idempotency on _configsvrCommitChunkSplit a check should be placed on the split commit: first check if a chunk with the given range exists, if not, check if there are chunks with the given split points as boundaries.
|