Skip to content

Commit

Permalink
Add checkConnectorSupports to IsolationLevel
Browse files Browse the repository at this point in the history
  • Loading branch information
electrum committed Jan 20, 2016
1 parent 5825e75 commit 6ad5d72
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 32 deletions.
Expand Up @@ -13,7 +13,6 @@
*/
package com.facebook.presto.cassandra;

import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.connector.Connector;
import com.facebook.presto.spi.connector.ConnectorMetadata;
import com.facebook.presto.spi.connector.ConnectorRecordSetProvider;
Expand All @@ -26,9 +25,8 @@

import javax.inject.Inject;

import static com.facebook.presto.spi.StandardErrorCode.UNSUPPORTED_ISOLATION_LEVEL;
import static com.facebook.presto.spi.transaction.IsolationLevel.READ_UNCOMMITTED;
import static java.lang.String.format;
import static com.facebook.presto.spi.transaction.IsolationLevel.checkConnectorSupports;
import static java.util.Objects.requireNonNull;

public class CassandraConnector
Expand Down Expand Up @@ -60,9 +58,7 @@ public CassandraConnector(
@Override
public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly)
{
if (!READ_UNCOMMITTED.meetsRequirementOf(isolationLevel)) {
throw new PrestoException(UNSUPPORTED_ISOLATION_LEVEL, format("Connector supported isolation level %s does not meet requested isolation level %s", READ_UNCOMMITTED, isolationLevel));
}
checkConnectorSupports(READ_UNCOMMITTED, isolationLevel);
return CassandraTransactionHandle.INSTANCE;
}

Expand Down
Expand Up @@ -15,7 +15,6 @@

import com.facebook.presto.spi.ConnectorHandleResolver;
import com.facebook.presto.spi.NodeManager;
import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.connector.Connector;
import com.facebook.presto.spi.connector.ConnectorFactory;
import com.facebook.presto.spi.connector.ConnectorMetadata;
Expand All @@ -28,9 +27,8 @@

import java.util.Map;

import static com.facebook.presto.spi.StandardErrorCode.UNSUPPORTED_ISOLATION_LEVEL;
import static com.facebook.presto.spi.transaction.IsolationLevel.READ_COMMITTED;
import static java.lang.String.format;
import static com.facebook.presto.spi.transaction.IsolationLevel.checkConnectorSupports;
import static java.util.Objects.requireNonNull;

public class JmxConnectorFactory
Expand Down Expand Up @@ -65,9 +63,7 @@ public Connector create(String connectorId, Map<String, String> properties)
@Override
public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly)
{
if (!READ_COMMITTED.meetsRequirementOf(isolationLevel)) {
throw new PrestoException(UNSUPPORTED_ISOLATION_LEVEL, format("Connector supported isolation level %s does not meet requested isolation level %s", READ_COMMITTED, isolationLevel));
}
checkConnectorSupports(READ_COMMITTED, isolationLevel);
return JmxTransactionHandle.INSTANCE;
}

Expand Down
Expand Up @@ -13,7 +13,6 @@
*/
package com.facebook.presto.kafka;

import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.connector.Connector;
import com.facebook.presto.spi.connector.ConnectorMetadata;
import com.facebook.presto.spi.connector.ConnectorRecordSetProvider;
Expand All @@ -25,10 +24,8 @@

import javax.inject.Inject;

import static com.facebook.presto.spi.StandardErrorCode.UNSUPPORTED_ISOLATION_LEVEL;
import static com.facebook.presto.spi.transaction.IsolationLevel.READ_COMMITTED;
import static com.facebook.presto.spi.transaction.IsolationLevel.REPEATABLE_READ;
import static java.lang.String.format;
import static com.facebook.presto.spi.transaction.IsolationLevel.checkConnectorSupports;
import static java.util.Objects.requireNonNull;

/**
Expand Down Expand Up @@ -60,9 +57,7 @@ public KafkaConnector(
@Override
public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly)
{
if (!READ_COMMITTED.meetsRequirementOf(isolationLevel)) {
throw new PrestoException(UNSUPPORTED_ISOLATION_LEVEL, format("Connector supported isolation level %s does not meet requested isolation level %s", REPEATABLE_READ, isolationLevel));
}
checkConnectorSupports(READ_COMMITTED, isolationLevel);
return KafkaTransactionHandle.INSTANCE;
}

Expand Down
Expand Up @@ -15,7 +15,6 @@

import com.facebook.presto.security.LegacyConnectorAccessControl;
import com.facebook.presto.spi.ConnectorIndexResolver;
import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.SystemTable;
import com.facebook.presto.spi.connector.Connector;
import com.facebook.presto.spi.connector.ConnectorAccessControl;
Expand All @@ -36,8 +35,7 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import static com.facebook.presto.spi.StandardErrorCode.UNSUPPORTED_ISOLATION_LEVEL;
import static java.lang.String.format;
import static com.facebook.presto.spi.transaction.IsolationLevel.checkConnectorSupports;
import static java.util.Objects.requireNonNull;

public class LegacyTransactionConnector
Expand All @@ -56,9 +54,7 @@ public LegacyTransactionConnector(String connectorId, com.facebook.presto.spi.Co
@Override
public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly)
{
if (!connector.getIsolationLevel().meetsRequirementOf(isolationLevel)) {
throw new PrestoException(UNSUPPORTED_ISOLATION_LEVEL, format("Connector supported isolation level %s does not meet requested isolation level %s", connector.getIsolationLevel(), isolationLevel));
}
checkConnectorSupports(connector.getIsolationLevel(), isolationLevel);
return LegacyTransactionHandle.create(connectorId);
}

Expand Down
Expand Up @@ -13,7 +13,6 @@
*/
package com.facebook.presto.raptor;

import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.SystemTable;
import com.facebook.presto.spi.connector.Connector;
import com.facebook.presto.spi.connector.ConnectorMetadata;
Expand All @@ -33,10 +32,9 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import static com.facebook.presto.spi.StandardErrorCode.UNSUPPORTED_ISOLATION_LEVEL;
import static com.facebook.presto.spi.transaction.IsolationLevel.READ_COMMITTED;
import static com.facebook.presto.spi.transaction.IsolationLevel.checkConnectorSupports;
import static com.google.common.base.Preconditions.checkArgument;
import static java.lang.String.format;
import static java.util.Objects.requireNonNull;

public class RaptorConnector
Expand Down Expand Up @@ -83,11 +81,9 @@ public boolean isSingleStatementWritesOnly()
}

@Override
public ConnectorTransactionHandle beginTransaction(IsolationLevel level, boolean readOnly)
public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly)
{
if (!READ_COMMITTED.meetsRequirementOf(level)) {
throw new PrestoException(UNSUPPORTED_ISOLATION_LEVEL, format("Raptor only supports isolation level %s, not %s", READ_COMMITTED, level));
}
checkConnectorSupports(READ_COMMITTED, isolationLevel);
return new RaptorTransactionHandle();
}

Expand Down
Expand Up @@ -13,6 +13,11 @@
*/
package com.facebook.presto.spi.transaction;

import com.facebook.presto.spi.PrestoException;

import static com.facebook.presto.spi.StandardErrorCode.UNSUPPORTED_ISOLATION_LEVEL;
import static java.lang.String.format;

public enum IsolationLevel
{
SERIALIZABLE,
Expand Down Expand Up @@ -47,4 +52,11 @@ public String toString()
{
return name().replace('_', ' ');
}

public static void checkConnectorSupports(IsolationLevel supportedLevel, IsolationLevel requestedLevel)
{
if (!supportedLevel.meetsRequirementOf(requestedLevel)) {
throw new PrestoException(UNSUPPORTED_ISOLATION_LEVEL, format("Connector supported isolation level %s does not meet requested isolation level %s", supportedLevel, requestedLevel));
}
}
}

0 comments on commit 6ad5d72

Please sign in to comment.