Temporal worker update process recommendation

Hi folks,

What is the recommended way to to update temporal worker with no down time? Our current setup works by deploying new bit to a parallel worker and stopping the old one. One problem we are experiencing with this is that the context cancelation causes ongoing activities to be failed.
Is there a way to set a worker in “drain” mode, allowing it to finish activity/workflow execution while accepting new workflow/activities on the new worker running in parallel.

Is there a recommended way to update workers with no downtime otherwise?
Thanks