LOCAL VERDICT LEDGER TIME OUT OF BOUND Error in Daml Script

When running a Daml Script, I get the following error consistently at the same Daml create command submission:

Exception in thread "main" com.daml.lf.engine.script.ScriptF$FailedCmd: Command submit failed: ABORTED: LOCAL_VERDICT_LEDGER_TIME_OUT_OF_BOUND(2,34761e93): Rejected transaction as delta of the ledger time and the record time exceed the time tolerance ledgerTime=2023-02-10T08:44:34.919230Z, recordTime=2023-02-10T08:43:33.373653Z, maxDelta=1m

I understand from the documentation here that this is due to an overloaded network.

  1. Assuming this particular command submission is a long-running transaction, how do I specify a ledger time with the command submission in Daml Script?

  2. Assuming this particular command submission is a short-running transaction, how do I retry this transaction if it fails in Daml Script?

  3. Will increasing the maxDelta not solve this issue? Is it not a recommended solution?

Is this the same parameter as Canton domain service’s ledger_time_record_time_tolerance ?

Can you please double-check that the clocks of the participant node and of the domain/sequencer nodes are synchronized (e.g. using NTP). Given that the ledger time (assigned by the participant) is running ahead of the record time (assigned by the sequencer), I don’t expect an overloaded system but a divergence of clocks.

The maxDelta is indeed controlled through the dynamic domain parameter ledgerTimeRecordTimeTolerance, you can change it via the dynamic domain parameters: Manage Domains — Daml SDK 2.5.3 documentation

5 Likes

Cheers, thank you @soren!