Copies offers Make primary onto a Server without the copy floor, which the Deploy refuses#2802

opened21d agobyNNick
GitHub writeback is off. Issues and comments you change here stay in GitCafe. Sync settings

Copies offers Make primary (and Add copy) onto a Server whose Ployz lacks the copy floor (ployz.volume.copy.floor.v1), then the Deploy refuses the move.

Seen on real Machines while verifying #2784: machine-1 on 0.3.0-beta.6 holds data; machine-2 on 0.3.0-beta.1 (copy.set but no copy.floor) holds its mirror. The mirror's detail offers Make primary moves db to machine-2 on deploy. The Deploy's move observes machine-2 as the run's destination without the floor, so it fails with server_lacks.

Cause: placementTargets (dashboard/src/modules/volume-placement/volume-placement.ts) plans each candidate with planFromCopies over members as inspectVolumeCopies reads them without a run, so a floorless destination answers normally. #2784 fixes the same gap for Restore points via seedOffer, which maps floorless copy holders to a lack. The move/mirror offer could do the same, with the destination counted as the run's own isDestination does.

Only 0.3.0-beta.1 serves copy.set without copy.floor, so this reaches few Servers.