You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by su...@apache.org on 2016/04/07 03:07:15 UTC
[3/4] drill git commit: DRILL-4523: Disallow using loopback address
in distributed mode
DRILL-4523: Disallow using loopback address in distributed mode
closes #445
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/9514cbe7
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/9514cbe7
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/9514cbe7
Branch: refs/heads/master
Commit: 9514cbe7574a5bfce40bf8fe982faf2aef48bc0e
Parents: a759552
Author: Arina Ielchiieva <ar...@gmail.com>
Authored: Thu Mar 24 16:46:06 2016 +0000
Committer: Sudheesh Katkam <sk...@maprtech.com>
Committed: Wed Apr 6 16:57:40 2016 -0700
----------------------------------------------------------------------
.../java/org/apache/drill/exec/server/Drillbit.java | 9 ++++++---
.../org/apache/drill/exec/service/ServiceEngine.java | 13 ++++++++++++-
2 files changed, 18 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/9514cbe7/exec/java-exec/src/main/java/org/apache/drill/exec/server/Drillbit.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/Drillbit.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/Drillbit.java
index 441fa91..d981342 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/Drillbit.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/Drillbit.java
@@ -86,18 +86,21 @@ public class Drillbit implements AutoCloseable {
final boolean allowPortHunting = serviceSet != null;
context = new BootStrapContext(config, classpathScan);
manager = new WorkManager(context);
- engine = new ServiceEngine(manager.getControlMessageHandler(), manager.getUserWorker(), context,
- manager.getWorkBus(), manager.getBee(), allowPortHunting);
webServer = new WebServer(config, context.getMetrics(), manager);
-
+ boolean isDistributedMode = false;
if (serviceSet != null) {
coord = serviceSet.getCoordinator();
storeProvider = new CachingPersistentStoreProvider(new LocalPersistentStoreProvider(config));
} else {
coord = new ZKClusterCoordinator(config);
storeProvider = new PersistentStoreRegistry(this.coord, config).newPStoreProvider();
+ isDistributedMode = true;
}
+
+ engine = new ServiceEngine(manager.getControlMessageHandler(), manager.getUserWorker(), context,
+ manager.getWorkBus(), manager.getBee(), allowPortHunting, isDistributedMode);
+
logger.info("Construction completed ({} ms).", w.elapsed(TimeUnit.MILLISECONDS));
}
http://git-wip-us.apache.org/repos/asf/drill/blob/9514cbe7/exec/java-exec/src/main/java/org/apache/drill/exec/service/ServiceEngine.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/service/ServiceEngine.java b/exec/java-exec/src/main/java/org/apache/drill/exec/service/ServiceEngine.java
index 169e26e..17edbc2 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/service/ServiceEngine.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/service/ServiceEngine.java
@@ -28,6 +28,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
+import org.apache.commons.lang3.StringUtils;
import org.apache.drill.common.AutoCloseables;
import org.apache.drill.common.config.DrillConfig;
import org.apache.drill.exec.ExecConstants;
@@ -59,13 +60,14 @@ public class ServiceEngine implements AutoCloseable {
private final DrillConfig config;
boolean useIP = false;
private final boolean allowPortHunting;
+ private final boolean isDistributedMode;
private final BufferAllocator userAllocator;
private final BufferAllocator controlAllocator;
private final BufferAllocator dataAllocator;
public ServiceEngine(ControlMessageHandler controlMessageHandler, UserWorker userWorker, BootStrapContext context,
- WorkEventBus workBus, WorkerBee bee, boolean allowPortHunting) throws DrillbitStartupException {
+ WorkEventBus workBus, WorkerBee bee, boolean allowPortHunting, boolean isDistributedMode) throws DrillbitStartupException {
userAllocator = newAllocator(context, "rpc:user", "drill.exec.rpc.user.server.memory.reservation",
"drill.exec.rpc.user.server.memory.maximum");
controlAllocator = newAllocator(context, "rpc:bit-control",
@@ -85,6 +87,7 @@ public class ServiceEngine implements AutoCloseable {
this.dataPool = new DataConnectionCreator(context, dataAllocator, workBus, bee, allowPortHunting);
this.config = context.getConfig();
this.allowPortHunting = allowPortHunting;
+ this.isDistributedMode = isDistributedMode;
registerMetrics(context.getMetrics());
}
@@ -141,6 +144,8 @@ public class ServiceEngine implements AutoCloseable {
public DrillbitEndpoint start() throws DrillbitStartupException, UnknownHostException{
int userPort = userServer.bind(config.getInt(ExecConstants.INITIAL_USER_PORT), allowPortHunting);
String address = useIP ? InetAddress.getLocalHost().getHostAddress() : InetAddress.getLocalHost().getCanonicalHostName();
+ checkLoopbackAddress(address);
+
DrillbitEndpoint partialEndpoint = DrillbitEndpoint.newBuilder()
.setAddress(address)
//.setAddress("localhost")
@@ -177,6 +182,12 @@ public class ServiceEngine implements AutoCloseable {
});
}
+ private void checkLoopbackAddress(String address) throws DrillbitStartupException, UnknownHostException {
+ if (isDistributedMode && InetAddress.getByName(address).isLoopbackAddress()) {
+ throw new DrillbitStartupException("Drillbit is disallowed to bind to loopback address in distributed mode.");
+ }
+ }
+
@Override
public void close() throws Exception {
// this takes time so close them in parallel