DAML Upgrade Element: Waiting for other upgraders to finish reference index creation

Hello, I’m doing a test upgrade on sandbox locally with the tool and runner version of 2.5.4. I’m currently testing automating the process, so I’ve created a simple V1 and V2 of a template that I want to upgrade. The template upgrades fine, but I’m getting this errror INFO o.a.p.s.Materializer - [StatusCheck Flow logger] Element: Waiting for other upgraders to finish reference index creation... and the script refuses to exit. I’m currently running the initializeUpgraders script with all parties on the ledger, even though this contract only exists for one party with only that parties authorization.

I’ve done the upgrade in the past with a previous version of the tool (2.1.6) and we have never encountered something like this. I believe the referencedIndex contract is a new feature (since the version I used) but I was not able to find where the choice UpgradeStatus_CreateReferenceIndex was called to create the indexd contract (i wasnt able to read the contents of the jar file). I guess my question is, does this mean that the initiation of the upgrade went wrong (or somewhere else), or does the upgrade only work if the parties that have a contract to be upgraded are included in the init.json file?

Upon further inspection, I see that im getting [da-ui-backend-pekko.actor.default-dispatcher-4] ERROR c.d.n.s.platform.PlatformSubscriber - Error processing transaction Unknown type 40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7:DA.Types:Tuple2: 1220290a93793ef5ac0c01fade30f345137323025716aa1c422e238208ad542edfa3. Its effects will not be visible. pekkoUid=-8822631939438513462, sourceThread=da-ui-backend-pekko.actor.default-dispatcher-7, sourceActorSystem=da-ui-backend, pekkoAddress=pekko://da-ui-backend, pekkoSource=pekko://da-ui-backend/user/$a/party-8e3255aa%3A%3A12205ae48263dc5d0cc1a737d1c73008fa36b07729a2e47ee3b80aa1d2f1b1969fca, pekkoTimestamp=16:24:25.498UTC when I run the initiateUpgraders script in the navigator log

I’m also finding that the run-upgrade step using the runner does not exit even when it displays this: 2024-11-22 19:19:32,341 INFO c.d.u.t.UpgradeTask - Shutting down... 2024-11-22 19:19:32,392 INFO o.a.p.a.CoordinatedShutdown - Running CoordinatedShutdown with reason [ActorSystemTerminateReason] 2024-11-22 19:19:32,406 INFO c.d.u.e.UpgradeExecutable$ - Execution done 2024-11-22 19:19:32,407 INFO c.d.u.e.UpgradeExecutable$ - Task completed in 2995 milliseconds

Hi @austin ! Can you provide more details about your setup:

  • Which version of daml sandbox you are using
  • Do you have contractId references between contracts to be upgraded
  • How many upgrader parties do you have in your setup
  • Can you confirm that all your upgrader party/parties combiner is observer to the whole ledger

Hey Tamas,
I am using sdk 2.9.4, I honestly am unsure if there are contractId references I am new to this project but there are a lot of interfaces. I have 6 upgrader parties, and all parties combined should be able to see the whole ledger since all parties are included as upgraders except for the upgrade coordinator (which has no contracts). When I did include the upgrade coordinator as an upgrader thats when I was getting the “Waiting for other upgraders to finish reference index creation” error.

upgrader and upgradeCoordinator are roles for parties, the upgradeCoordinator party can be an upgrader at the same time, but if it isn’t an observer on any other contracts you shouldn’t include it in the upgrader set.
What the commands you are using exactly to execute the upgrade?

I’m following the commands from the playbook, so for example:

for party in "${upgraderarray[@]}";
    do
        party=$(echo $party | tr -d '"')
        echo "~~~~~~~RUNNING UPGRADE FOR $(echo $party | cut -d ":" -f 1)~~~~~~~"
        sleep 1
        java -jar upgrade-runner-2.5.1-2.5.1.jar run-upgrade \
            --ledger-host localhost \
            --ledger-port 6865 \
            --force \
            --upgrade-dar-path testUpgrade/.daml/dist/upgrade-project-0.0.0.dar \
            --upgrader "$party"
        sleep 3
    done

where upgraderarray only contains the upgrader parties

You should run the run-upgrade step parallel to every upgrader.

so for that step, i should include & after the sleep 3, or somewhere in that area?