[
https://issues.apache.org/jira/browse/IGNITE-27202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vyacheslav Koptilin updated IGNITE-27202:
-----------------------------------------
Description:
The following method always creates a new `TablePartitionId` instance in order
to set up `commitPartitionId` for directly mapped transactions
{code:java}
/**
* Reads a transaction.
*
* @param in Unpacker.
* @param tsUpdater Packer.
* @param resources Resource registry.
* @param txManager Tx manager.
* @param notificationSender Notification sender.
* @param resourceIdHolder Resource id holder.
* @param options Request options. Defines how a request is processed.
* @return Transaction, if present, or null.
*/
public static @Nullable InternalTransaction readTx(
ClientMessageUnpacker in,
HybridTimestampTracker tsUpdater,
ClientResourceRegistry resources,
@Nullable TxManager txManager,
@Nullable NotificationSender notificationSender,
long[] resourceIdHolder,
EnumSet<RequestOptions> options) {
...
InternalTransaction remote = txManager.beginRemote(txId, new
TablePartitionId(commitTableId, commitPart),
coord, token, timeout, err -> {
// Will be called for write txns.
notificationSender.sendNotification(w ->
w.packUuid(txId), err, NULL_HYBRID_TIMESTAMP);
});
...{code}
The main problem here is that `tableId` will be considered as `zoneId` when
creating/writing a write intent,
and therefore, the write intent resolution mechanism will fail.
was:
The following method always creates a new `TablePartitionId` instance in order
to set up `commitPartitionId` for directly mapped transactions
{code:java}
/**
* Reads a transaction.
*
* @param in Unpacker.
* @param tsUpdater Packer.
* @param resources Resource registry.
* @param txManager Tx manager.
* @param notificationSender Notification sender.
* @param resourceIdHolder Resource id holder.
* @param options Request options. Defines how a request is processed.
* @return Transaction, if present, or null.
*/
public static @Nullable InternalTransaction readTx(
ClientMessageUnpacker in,
HybridTimestampTracker tsUpdater,
ClientResourceRegistry resources,
@Nullable TxManager txManager,
@Nullable NotificationSender notificationSender,
long[] resourceIdHolder,
EnumSet<RequestOptions> options) {
...
InternalTransaction remote = txManager.beginRemote(txId, new
TablePartitionId(commitTableId, commitPart),
coord, token, timeout, err -> {
// Will be called for write txns.
notificationSender.sendNotification(w ->
w.packUuid(txId), err, NULL_HYBRID_TIMESTAMP);
});
...{code}
The main problem here is that `tableId` will be considered as `zoneId` when
creating/writing a write intent,
> The commit partition ID for directly mapped transactions must not reference a
> TablePartitionId.
> -----------------------------------------------------------------------------------------------
>
> Key: IGNITE-27202
> URL: https://issues.apache.org/jira/browse/IGNITE-27202
> Project: Ignite
> Issue Type: Bug
> Reporter: Vyacheslav Koptilin
> Assignee: Vyacheslav Koptilin
> Priority: Major
> Labels: ignite-3
> Fix For: 3.2
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> The following method always creates a new `TablePartitionId` instance in
> order to set up `commitPartitionId` for directly mapped transactions
>
> {code:java}
> /**
> * Reads a transaction.
> *
> * @param in Unpacker.
> * @param tsUpdater Packer.
> * @param resources Resource registry.
> * @param txManager Tx manager.
> * @param notificationSender Notification sender.
> * @param resourceIdHolder Resource id holder.
> * @param options Request options. Defines how a request is processed.
> * @return Transaction, if present, or null.
> */
> public static @Nullable InternalTransaction readTx(
> ClientMessageUnpacker in,
> HybridTimestampTracker tsUpdater,
> ClientResourceRegistry resources,
> @Nullable TxManager txManager,
> @Nullable NotificationSender notificationSender,
> long[] resourceIdHolder,
> EnumSet<RequestOptions> options) {
> ...
> InternalTransaction remote = txManager.beginRemote(txId, new
> TablePartitionId(commitTableId, commitPart),
> coord, token, timeout, err -> {
> // Will be called for write txns.
> notificationSender.sendNotification(w ->
> w.packUuid(txId), err, NULL_HYBRID_TIMESTAMP);
> });
> ...{code}
> The main problem here is that `tableId` will be considered as `zoneId` when
> creating/writing a write intent,
> and therefore, the write intent resolution mechanism will fail.
>
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)