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; package com.facebook.presto.cassandra;


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


import javax.inject.Inject; 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 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; import static java.util.Objects.requireNonNull;


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


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


import com.facebook.presto.spi.ConnectorHandleResolver; import com.facebook.presto.spi.ConnectorHandleResolver;
import com.facebook.presto.spi.NodeManager; 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.Connector;
import com.facebook.presto.spi.connector.ConnectorFactory; import com.facebook.presto.spi.connector.ConnectorFactory;
import com.facebook.presto.spi.connector.ConnectorMetadata; import com.facebook.presto.spi.connector.ConnectorMetadata;
Expand All @@ -28,9 +27,8 @@


import java.util.Map; 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 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; import static java.util.Objects.requireNonNull;


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


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


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


import javax.inject.Inject; 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.READ_COMMITTED;
import static com.facebook.presto.spi.transaction.IsolationLevel.REPEATABLE_READ; import static com.facebook.presto.spi.transaction.IsolationLevel.checkConnectorSupports;
import static java.lang.String.format;
import static java.util.Objects.requireNonNull; import static java.util.Objects.requireNonNull;


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


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


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


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


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


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


import com.facebook.presto.spi.PrestoException;
import com.facebook.presto.spi.SystemTable; import com.facebook.presto.spi.SystemTable;
import com.facebook.presto.spi.connector.Connector; import com.facebook.presto.spi.connector.Connector;
import com.facebook.presto.spi.connector.ConnectorMetadata; import com.facebook.presto.spi.connector.ConnectorMetadata;
Expand All @@ -33,10 +32,9 @@
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap; 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.READ_COMMITTED;
import static com.facebook.presto.spi.transaction.IsolationLevel.checkConnectorSupports;
import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkArgument;
import static java.lang.String.format;
import static java.util.Objects.requireNonNull; import static java.util.Objects.requireNonNull;


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


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


Expand Down
Expand Up @@ -13,6 +13,11 @@
*/ */
package com.facebook.presto.spi.transaction; 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 public enum IsolationLevel
{ {
SERIALIZABLE, SERIALIZABLE,
Expand Down Expand Up @@ -47,4 +52,11 @@ public String toString()
{ {
return name().replace('_', ' '); 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.