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.
What you see
Section titled “What you see”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.
Why it happens
Section titled “Why it happens”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.
What to do
Section titled “What to do”- Look at the rows Alcuin read again. The changes from the earlier commit are there, the new row among them.
- To change a row that the earlier commit added, edit it in the grid as any other row.
- Commit what is left.
Internal name
Section titled “Internal name”The engine reports this as ENGINE_EARLIER_COMMIT_LANDED. Quote either name in an issue.