clockwork icon indicating copy to clipboard operation
clockwork copied to clipboard

`if` lambda can mutate the time object passed to other jobs

Open deepak-shopify opened this issue 10 months ago • 0 comments

When I call the utc method on the time object passed as the parameter to a lambda, it changes the timezone of the time object for subsequent jobs' lambdas. e.g. the following if lambda changes the time zone of the time object for subsequent jobs.

if: lambda { |t|
      puts "first lambda #{t}"
      t.utc.hour % 12 == 0
    }

I've created a repository for your reference with two jobs. The first one invokes the utc method which changes the timezone of the time object passed in the second job. Interestingly, this gets reset in the subsequent run. Here is a repository for you to test against: https://github.com/deepak-shopify/clockwork-bug/tree/main

➜  clockwork_app git:(main) bundle exec clockwork clock.rb

I, [2025-03-12T20:36:38.148840 #33111]  INFO -- : Starting clock for 2 events: [ first.job second.job ]
first lambda 2025-03-12 20:36:38 +0530
second lambda 2025-03-12 15:06:38 UTC <-- THIS SHOULD BE +0530
first lambda 2025-03-12 20:36:39 +0530 <-- TIMEZONE IS RESET
second lambda 2025-03-12 15:06:39 UTC <-- BACK TO UTC

My expectation is that the time object passed to each job should be independent of the operations performed on it in other jobs.

deepak-shopify avatar Mar 12 '25 15:03 deepak-shopify