Added test that detects write conflicts
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/b5e9396d Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/b5e9396d Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/b5e9396d Branch: refs/heads/txn Commit: b5e9396de33692991c83f275b61ec44460db674a Parents: ed54b29 Author: Thomas D'Silva <twdsi...@gmail.com> Authored: Thu Mar 12 17:36:40 2015 -0700 Committer: Thomas D'Silva <twdsi...@gmail.com> Committed: Thu Mar 12 17:36:40 2015 -0700 ---------------------------------------------------------------------- .../apache/phoenix/jdbc/PhoenixConnection.java | 21 ++++++-------------- .../phoenix/jdbc/PhoenixEmbeddedDriver.java | 6 +++++- .../query/ConnectionQueryServicesImpl.java | 2 +- 3 files changed, 12 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/b5e9396d/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java index a13f75e..6d60b9c 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixConnection.java @@ -51,16 +51,9 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Properties; import java.util.concurrent.Executor; -import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; -import co.cask.tephra.TransactionAware; -import co.cask.tephra.TransactionContext; -import co.cask.tephra.TransactionFailureException; -import co.cask.tephra.TransactionSystemClient; - -import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HConstants; import org.apache.phoenix.call.CallRunner; import org.apache.phoenix.exception.SQLExceptionCode; @@ -68,11 +61,9 @@ import org.apache.phoenix.exception.SQLExceptionInfo; import org.apache.phoenix.execute.MutationState; import org.apache.phoenix.expression.function.FunctionArgumentType; import org.apache.phoenix.hbase.index.util.KeyValueBuilder; -import org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.ConnectionInfo; import org.apache.phoenix.jdbc.PhoenixStatement.PhoenixStatementParser; import org.apache.phoenix.query.ConnectionQueryServices; import org.apache.phoenix.query.DelegateConnectionQueryServices; -import org.apache.phoenix.query.HBaseFactoryProvider; import org.apache.phoenix.query.MetaDataMutated; import org.apache.phoenix.query.QueryConstants; import org.apache.phoenix.query.QueryServices; @@ -101,14 +92,14 @@ import org.apache.phoenix.util.PropertiesUtil; import org.apache.phoenix.util.ReadOnlyProps; import org.apache.phoenix.util.SQLCloseable; import org.apache.phoenix.util.SQLCloseables; -import org.apache.twill.discovery.ZKDiscoveryService; -import org.apache.twill.zookeeper.RetryStrategies; -import org.apache.twill.zookeeper.ZKClientService; -import org.apache.twill.zookeeper.ZKClientServices; -import org.apache.twill.zookeeper.ZKClients; import org.cloudera.htrace.Sampler; import org.cloudera.htrace.TraceScope; +import co.cask.tephra.TransactionAware; +import co.cask.tephra.TransactionContext; +import co.cask.tephra.TransactionFailureException; +import co.cask.tephra.TransactionSystemClient; + import com.google.common.base.Objects; import com.google.common.base.Strings; import com.google.common.collect.ImmutableMap; @@ -480,7 +471,7 @@ public class PhoenixConnection implements Connection, org.apache.phoenix.jdbc.Jd txContext.finish(); } catch (TransactionFailureException e) { try { - txContext.abort(); + txContext.abort(e); throw new SQLExceptionInfo.Builder( SQLExceptionCode.TRANSACTION_FINISH_EXCEPTION) .setRootCause(e).build().buildException(); http://git-wip-us.apache.org/repos/asf/phoenix/blob/b5e9396d/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixEmbeddedDriver.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixEmbeddedDriver.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixEmbeddedDriver.java index ff25fae..e152750 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixEmbeddedDriver.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixEmbeddedDriver.java @@ -181,6 +181,10 @@ public abstract class PhoenixEmbeddedDriver implements Driver, org.apache.phoeni .setMessage(url).build().buildException(); } + public String getZookeeperConnectionString() { + return getZookeeperQuorum() + ":" + getPort(); + } + /** * Detect url with quorum:1,quorum:2 as HBase does not handle different port numbers * for different quorum hostnames. @@ -199,7 +203,7 @@ public abstract class PhoenixEmbeddedDriver implements Driver, org.apache.phoeni return false; } - protected static ConnectionInfo create(String url) throws SQLException { + public static ConnectionInfo create(String url) throws SQLException { StringTokenizer tokenizer = new StringTokenizer(url == null ? "" : url.substring(PhoenixRuntime.JDBC_PROTOCOL.length()),DELIMITERS, true); int nTokens = 0; String[] tokens = new String[5]; http://git-wip-us.apache.org/repos/asf/phoenix/blob/b5e9396d/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java index 4b23d10..5abf151 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java @@ -286,7 +286,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement } private void initTxServiceClient() { - String zkQuorumServersString = connectionInfo.getZookeeperQuorum(); + String zkQuorumServersString = connectionInfo.getZookeeperQuorum()+":"+connectionInfo.getPort(); ZKClientService zkClientService = ZKClientServices.delegate( ZKClients.reWatchOnExpire( ZKClients.retryOnFailure(