I have a suite that’s intended to run in a realtime mode. I set my initial cycle point via next(), i.e.:
initial cycle point = next(T-00; T-15; T-30; T-45)
so that the run starts on the nearest subsequent quarter hour. The cycle point cadence is set to 15 minutes, so the first cycle point has a time component that’s between 0 and 15 minutes after right now, and the second cycle point is 15 minutes after that. The tracking of the wall clock is created by first creating an xtrigger:
[[xtriggers]]
# external trigger condition that's met when wall clock time equals
# cycle point time
wall_clock_equals_cycle_point = wall_clock()
. . .and then referencing that xtrigger in my scheduling graphs, making it a dependency for tasks that start the processing in a cycle point.
I have extensively tested this, both via simulation and using more elaborate stub task scripts (needed because some of the tasks edit the suite graph). All my tests have gone just fine.
However, now I need to test the full suite on real data. Because I do not have a realtime data feed, I need to run the suite over a historical interval, as if that was realtime. One way to do that would be to reset the date/time clock of the system on which the suite would be running, changing it to the past time period I want to simulate, the period where I have data. There are all kinds of reasons why I need to avoid that route. So, instead, my plan was to change Cylc’s timekeeping. I first changed the initial cycle point to 1 year 7 months ago, e.g.:
initial cycle point = next(T-00; T-15; T-30; T-45) -P1Y7M
This appears to work fine: the cycle point values look exactly as desired. Then, I changed the xtrigger to have a comparable offset, i.e.:
[[xtriggers]]
wall_clock_equals_cycle_point = wall_clock(offset=P1Y7M)
This isn’t working right. The tasks in the first two cycle points that have a dependency on @wall_clock_equals_cycle_point are evaluating as having that dependency satisfied right at suite startup, even though the cycle points they’re associated with should be a few minutes, and 15 + a few minutes, after the offset wall clock value.
What am I doing wrong?
Thanks!