Version 1 of this library required a shutdown function to be exposed, which v2 replaced with leaseLost and shardEnded. Having migrated to v2, I went through the process of implementing the new leaseLost and shardEnded functions and deployed the code (a few months ago). All went well until i had to split the shards which caused more than an hour of downtime while hunting for reasons why we weren't able to get beyond the shard split.
Turns out, v2 appears to be checking for the shutdown function and, if present, invokes it before doing any sort of checks for the new functions first. In my case, I rerouted the new leaseLost and shardEnded functions into the shutdown function I had before the v2 migration (with slight modifications):
Having a shutdown function on my processor resulted in the kcl not invoking the shardEnded function and instead called my shutdown function, with my reason actually being a checkpointer, and my checkpointer was actually the completeCallback function. This failed horribly.
I suggest reworking this part of the codebase so that it attempts to call the new functions first, and if the new functions aren't present, then revert to attempting the shutdown function.
Hi Team,
Version 1 of this library required a shutdown function to be exposed, which v2 replaced with
leaseLost
andshardEnded
. Having migrated to v2, I went through the process of implementing the newleaseLost
andshardEnded
functions and deployed the code (a few months ago). All went well until i had to split the shards which caused more than an hour of downtime while hunting for reasons why we weren't able to get beyond the shard split.Turns out, v2 appears to be checking for the shutdown function and, if present, invokes it before doing any sort of checks for the new functions first. In my case, I rerouted the new leaseLost and shardEnded functions into the shutdown function I had before the v2 migration (with slight modifications):
Having a
shutdown
function on my processor resulted in the kcl not invoking theshardEnded
function and instead called myshutdown
function, with myreason
actually being a checkpointer, and mycheckpointer
was actually the completeCallback function. This failed horribly.I suggest reworking this part of the codebase so that it attempts to call the new functions first, and if the new functions aren't present, then revert to attempting the
shutdown
function.