Skip to content

ALC-3007: Earlier changes landed

Alcuin did not apply your staged row changes because an earlier commit with the same connection profile, whose reply was lost, turned out to have landed, and it had already added a new row that your changes hold again. Alcuin takes that row out of your staged changes; the rest stay staged so you can look them over.

The bar under the grid reads Your previous commit landed when the connection dropped, so these changes were not applied: a new row in them was already added. Reload the rows, then commit what is still to change. (new rows in them were for more than one). A note says A new row was already added, so it is no longer staged. (or 3 new rows were already added, so they are no longer staged.), and Alcuin reads the rows again, so the rows from the earlier commit appear.

For staged structure or a script, the review reads The connection dropped after 1 of 2 steps of these changes were committed: those stay, and the rest did not run. Reload to see them, then stage what is still to change. when only some of its steps landed and you apply the same changes again.

A commit’s reply went missing when the connection dropped (ALC-1005), or Alcuin stopped before the reply came. Alcuin writes down the transaction’s id, and the server it ran on, before it sends the commit. Before it commits the next row changes with that connection profile, it asks that server how the transaction ended. Structure changes and scripts are settled when you apply the same changes again.

When you commit the same changes again, Alcuin knows they are the same set and refuses them as already applied (ALC-3003). When you edited a staged new row first, it is a different set, but the row is the same one: it is already in the table, and applying it again would add a second copy. Alcuin remembers the new rows that landed, across restarts, and refuses a set only when it holds one of them. Changes to existing rows need no such memory: one the earlier commit already changed comes back as changed by someone else.

  1. Look at the rows Alcuin read again. The changes from the earlier commit are there, the new row among them.
  2. To change a row that the earlier commit added, edit it in the grid as any other row.
  3. Commit what is left.

The engine reports this as ENGINE_EARLIER_COMMIT_LANDED. Quote either name in an issue.