Skip to content

Commit

Permalink
IGNITE-23090 Start transaction on the first query
Browse files Browse the repository at this point in the history
  • Loading branch information
nizhikov committed Oct 5, 2024
1 parent d6cfa04 commit 939e88b
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,6 @@
import org.apache.ignite.internal.util.GridSpinBusyLock;
import org.apache.ignite.internal.util.nio.GridNioSession;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.transactions.TransactionConcurrency;
import org.apache.ignite.transactions.TransactionIsolation;
import org.jetbrains.annotations.Nullable;

import static org.apache.ignite.internal.jdbc.thin.JdbcThinUtils.nullableBooleanFromByte;
Expand Down Expand Up @@ -108,18 +106,6 @@ public class JdbcConnectionContext extends ClientListenerAbstractConnectionConte
/** Last reported affinity topology version. */
private AtomicReference<AffinityTopologyVersion> lastAffinityTopVer = new AtomicReference<>();

/** Transaction concurrency control. */
private TransactionConcurrency concurrency;

/** Transaction isolation level. */
private @Nullable TransactionIsolation isolation;

/** Transaction timeout. */
private long timeout;

/** Transaction label. */
private String lb;

/** Transaction context. */
private @Nullable ClientTxContext txCtx;

Expand Down Expand Up @@ -360,38 +346,4 @@ public AffinityTopologyVersion getAffinityTopologyVersionIfChanged() {
public JdbcProtocolContext protocolContext() {
return protoCtx;
}

/**
* Sets transaction parameters.
* @param concurrency Transaction concurrency.
* @param isolation Transaction isolation.
* @param timeout Transaction timeout.
* @param lb Transaction label.
*/
public void txParameters(TransactionConcurrency concurrency, @Nullable TransactionIsolation isolation, long timeout, String lb) {
this.concurrency = concurrency;
this.isolation = isolation;
this.timeout = timeout;
this.lb = lb;
}

/** */
public TransactionConcurrency concurrency() {
return concurrency;
}

/** */
public @Nullable TransactionIsolation isolation() {
return isolation;
}

/** */
public long transactionTimeout() {
return timeout;
}

/** */
public String transactionLabel() {
return lb;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -821,7 +821,7 @@ private List<FieldsQueryCursor<List<?>>> querySqlFields(
/** @return {@code True} if transaction enabled fro connection, {@code false} otherwise. */
private boolean txEnabledForConnection() {
return connCtx.protocolContext().isFeatureSupported(JdbcThinFeature.TX_AWARE_QUERIES)
&& connCtx.isolation() != null;
&& cliCtx.isolation() != null;
}

/** */
Expand All @@ -830,10 +830,10 @@ private int txId(int txId) {
return txId;

return startClientTransaction(
connCtx.concurrency(),
connCtx.isolation(),
connCtx.transactionTimeout(),
connCtx.transactionLabel()
cliCtx.concurrency(),
cliCtx.isolation(),
cliCtx.transactionTimeout(),
cliCtx.transactionLabel()
);
}

Expand Down Expand Up @@ -1414,7 +1414,7 @@ private JdbcResponse getSchemas(JdbcMetaSchemasRequest req) {
* @return resulting {@link JdbcResponse}.
*/
private JdbcResponse setTransactionParameters(JdbcSetTxParametersRequest req) {
connCtx.txParameters(
cliCtx.txParameters(
req.concurrency(),
req.isolation(),
req.timeout(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.util.worker.GridWorker;
import org.apache.ignite.thread.IgniteThread;
import org.apache.ignite.transactions.TransactionConcurrency;
import org.apache.ignite.transactions.TransactionIsolation;
import org.jetbrains.annotations.Nullable;

/**
Expand Down Expand Up @@ -98,6 +100,18 @@ public class SqlClientContext implements AutoCloseable {
* the processing the last request. */
private long totalProcessedOrderedReqs;

/** Transaction concurrency control. */
private TransactionConcurrency concurrency;

/** Transaction isolation level. */
private @Nullable TransactionIsolation isolation;

/** Transaction timeout. */
private long timeout;

/** Transaction label. */
private String lb;

/** Logger. */
private final IgniteLogger log;

Expand Down Expand Up @@ -338,6 +352,40 @@ public void orderedRequestProcessed() {
}
}

/**
* Sets transaction parameters.
* @param concurrency Transaction concurrency.
* @param isolation Transaction isolation.
* @param timeout Transaction timeout.
* @param lb Transaction label.
*/
public void txParameters(TransactionConcurrency concurrency, @Nullable TransactionIsolation isolation, long timeout, String lb) {
this.concurrency = concurrency;
this.isolation = isolation;
this.timeout = timeout;
this.lb = lb;
}

/** */
public TransactionConcurrency concurrency() {
return concurrency;
}

/** */
public @Nullable TransactionIsolation isolation() {
return isolation;
}

/** */
public long transactionTimeout() {
return timeout;
}

/** */
public String transactionLabel() {
return lb;
}

/** {@inheritDoc} */
@Override public void close() throws Exception {
if (streamers == null)
Expand Down

0 comments on commit 939e88b

Please sign in to comment.