Commits
- Commit:
a9f59459a22e9356823e828d88c4911c92c8abd1
- From:
- Serge Petrenko <sergepetrenko@tarantool.org>
- Date:
Dummy commit
- Commit:
6df312b1971647eb12000437070fa32c9008bcb9
- From:
- Serge Petrenko <sergepetrenko@tarantool.org>
- Via:
- Serge Petrenko <35663196+sergepetrenko@users.noreply.github.com>
- Date:
Generate changelog for 3.2.0
Also, remote unreleased/ entries and add missing downgrade versions to
the downgrade versions list.
NO_DOC=changelog
NO_TEST=changelog
NO_CHANGELOG=changelog
- Commit:
17b11601a45060523120fb6102e02b1a30332fbe
- From:
- Georgiy Lebedev <g.lebedev@tarantool.org>
- Via:
- Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
- Date:
test: fix #5430 test
The test blocked on the `wait_log` for registering replica2 on the master
node. The `wait_log` does not throw an error on timeout, and its return
value is ignored in the test, so the test simply continued after the
timeout and succeeded.
The reason the test blocked was that after 70a6883 we are unable to
register an anonymous replica while its relay has not stopped:
https://github.com/tarantool/tarantool/blob/9e616ab6f2f94ba2bcad3044187c474a1c05a8c5/src/box/box.cc#L4422-L4427
At the same time, the anonymous replica's relay cannot finish, because it
is blocked by `cbus_unpair` in `wal_clear_watcher`:
https://github.com/tarantool/tarantool/blob/9e616ab6f2f94ba2bcad3044187c474a1c05a8c5/src/box/relay.cc#L1068-L1074
https://github.com/tarantool/tarantool/blob/9e616ab6f2f94ba2bcad3044187c474a1c05a8c5/src/lib/core/cbus.h#L440-L442
To fix this let's move `ERRINJ_REPLICA_JOIN_DELAY` before
`box_register_replica`. This error injection is not used right now, so we
can reuse it here instead of `ERRINJ_WAL_DELAY`. This way the WAL won't get
blocked, and we will be able to get 2 concurrent replica registrations.
Let's also echo the `wait_log` result to make sure the fails in the future.
Closes #9617
NO_CHANGELOG=<test fix>
NO_DOC=<test fix>
- Commit:
6e1e1d50a703a26b4dbf4d7d4bcd4ba788d97864
- From:
- Georgiy Lebedev <g.lebedev@tarantool.org>
- Via:
- Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
- Date:
box: filter out tmp and remote txs when aborting all txs for DDL
Currently, we lack support of DDL in transactions, so now we simply apply
the strongest restriction and abort all other transactions when preparing a
DDL transaction (8f4be32).
However, we can relax this restriction for concurrent nop
(particularly, those using fully-temporary spaces) and remote (applier)
transactions, since they cannot possibly conflict each other by definition.
There can be 2 cases:
1. If the `ddl_owner` uses only fully-temporary spaces, we can allow
transactions containing only applier rows to continue. Since we do this in
`engine_prepare`, we can be sure that `ddl`_owner will not have any other
statements, while the transaction containing only applier rows, by
definition, cannot use `fully-temporary` spaces, so there can never be a
conflict. Regarding `before_replace` or `on_replace` triggers of the
applier transactions: although no DDL can be used inside them, they can
still use obsolete fully-temporary space definitions. However, if we see
that an applier transaction contains only applier rows at the moment of the
`ddl_owner` preparation, it is safe to let them continue, since later usage
of the prepared fully-temporary space DDL changes by triggers of the
applier transactions will be consistent.
2. If the `ddl_owner` contains only applier rows, we can allow transactions
that use only fully-temporary spaces to continue. It is safe to do so,
since later usage of the committed DDL changes by the in-progress
transactions will be consistent.
Both of these checks conform to this rule (8f4be32):
> In fact we should only abort transactions that have read dirty (i.e.
modified) objects.
Closes #9720
NO_DOC=<bugfix>
- Commit:
284cc37913fd528f08603942ef01b3726e38e260
- From:
- Georgiy Lebedev <g.lebedev@tarantool.org>
- Via:
- Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
- Date:
box: add a helper for detecting where a transaction is barely nop
In the scope of #9720 we will need to detect whether a transaction is
barely nop (particularly, whether it operates only on fully-temporary
spaces), so let's add a helper for this.
Needed for #9720
NO_CHANGELOG=<refactoring>
NO_DOC=<refactoring>
NO_TEST=<refactoring>