Repository: helix Updated Branches: refs/heads/master eb82c9516 -> 9e51cb7bd
De-couple IPC host / instance name Project: http://git-wip-us.apache.org/repos/asf/helix/repo Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/9e51cb7b Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/9e51cb7b Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/9e51cb7b Branch: refs/heads/master Commit: 9e51cb7bdf8424df46c6fa353e7c80d984c21193 Parents: eb82c95 Author: Greg Brandt <[email protected]> Authored: Mon Sep 7 20:30:49 2015 -0700 Committer: Greg Brandt <[email protected]> Committed: Sun Sep 13 23:38:13 2015 -0700 ---------------------------------------------------------------------- .../java/org/apache/helix/ipc/HelixIPCService.java | 1 + .../helix/resolver/AbstractHelixResolver.java | 16 +++++++++------- .../apache/helix/ipc/TestNettyHelixIPCService.java | 8 ++++++++ .../apache/helix/resolver/TestZKHelixResolver.java | 1 + 4 files changed, 19 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/helix/blob/9e51cb7b/helix-ipc/src/main/java/org/apache/helix/ipc/HelixIPCService.java ---------------------------------------------------------------------- diff --git a/helix-ipc/src/main/java/org/apache/helix/ipc/HelixIPCService.java b/helix-ipc/src/main/java/org/apache/helix/ipc/HelixIPCService.java index 6158514..b878aeb 100644 --- a/helix-ipc/src/main/java/org/apache/helix/ipc/HelixIPCService.java +++ b/helix-ipc/src/main/java/org/apache/helix/ipc/HelixIPCService.java @@ -33,6 +33,7 @@ import java.util.UUID; */ public interface HelixIPCService { + static final String IPC_HOST = "IPC_HOST"; static final String IPC_PORT = "IPC_PORT"; /** Starts service (must call before {@link #send}) */ http://git-wip-us.apache.org/repos/asf/helix/blob/9e51cb7b/helix-ipc/src/main/java/org/apache/helix/resolver/AbstractHelixResolver.java ---------------------------------------------------------------------- diff --git a/helix-ipc/src/main/java/org/apache/helix/resolver/AbstractHelixResolver.java b/helix-ipc/src/main/java/org/apache/helix/resolver/AbstractHelixResolver.java index c0fd2bb..9e2c45f 100644 --- a/helix-ipc/src/main/java/org/apache/helix/resolver/AbstractHelixResolver.java +++ b/helix-ipc/src/main/java/org/apache/helix/resolver/AbstractHelixResolver.java @@ -47,6 +47,7 @@ public abstract class AbstractHelixResolver implements HelixResolver { private static final int DEFAULT_THREAD_POOL_SIZE = 10; private static final long DEFAULT_LEASE_LENGTH_MS = 60 * 60 * 1000; // TODO: are these good // values? + private static final String IPC_HOST = "IPC_HOST"; private static final String IPC_PORT = "IPC_PORT"; private final Map<String, Spectator> _connections; private boolean _isConnected; @@ -142,13 +143,13 @@ public abstract class AbstractHelixResolver implements HelixResolver { // Resolve those participants Set<HelixAddress> result = new HashSet<HelixAddress>(); for (InstanceConfig participant : participants) { + String ipcHost = participant.getRecord().getSimpleField(IPC_HOST); String ipcPort = participant.getRecord().getSimpleField(IPC_PORT); - if (ipcPort == null) { - LOG.error("No ipc address registered for target instance " + participant.getInstanceName() - + ", skipping"); + if (ipcHost == null || ipcPort == null) { + throw new IllegalStateException("Could not resolve " + participant); } else { - result.add(new HelixAddress(scope, participant.getInstanceName(), new InetSocketAddress( - participant.getHostName(), Integer.valueOf(ipcPort)))); + result.add(new HelixAddress(scope, participant.getInstanceName(), + new InetSocketAddress(ipcHost, Integer.valueOf(ipcPort)))); } } @@ -175,13 +176,14 @@ public abstract class AbstractHelixResolver implements HelixResolver { if (scope.getSourceInstance() != null) { InstanceConfig config = routingTable.getInstanceConfig(scope.getSourceInstance()); + String ipcHost = config.getRecord().getSimpleField(IPC_HOST); String ipcPort = config.getRecord().getSimpleField(IPC_PORT); - if (ipcPort == null) { + if (ipcPort == null || ipcHost == null) { throw new IllegalStateException("No IPC address registered for source instance " + scope.getSourceInstance()); } return new HelixAddress(scope, scope.getSourceInstance(), new InetSocketAddress( - config.getHostName(), Integer.valueOf(ipcPort))); + ipcHost, Integer.valueOf(ipcPort))); } return null; http://git-wip-us.apache.org/repos/asf/helix/blob/9e51cb7b/helix-ipc/src/test/java/org/apache/helix/ipc/TestNettyHelixIPCService.java ---------------------------------------------------------------------- diff --git a/helix-ipc/src/test/java/org/apache/helix/ipc/TestNettyHelixIPCService.java b/helix-ipc/src/test/java/org/apache/helix/ipc/TestNettyHelixIPCService.java index 25833d7..d83a8fc 100644 --- a/helix-ipc/src/test/java/org/apache/helix/ipc/TestNettyHelixIPCService.java +++ b/helix-ipc/src/test/java/org/apache/helix/ipc/TestNettyHelixIPCService.java @@ -127,10 +127,18 @@ public class TestNettyHelixIPCService extends ZkTestBase { new HelixConfigScopeBuilder(HelixConfigScope.ConfigScopeProperty.PARTICIPANT) .forCluster(firstNode.getClusterName()).forParticipant(firstNode.getInstanceName()) .build(), HelixIPCService.IPC_PORT, String.valueOf(firstPort)); + firstNode.getConfigAccessor().set( + new HelixConfigScopeBuilder(HelixConfigScope.ConfigScopeProperty.PARTICIPANT) + .forCluster(firstNode.getClusterName()).forParticipant(firstNode.getInstanceName()) + .build(), HelixIPCService.IPC_HOST, "localhost"); secondNode.getConfigAccessor().set( new HelixConfigScopeBuilder(HelixConfigScope.ConfigScopeProperty.PARTICIPANT) .forCluster(secondNode.getClusterName()).forParticipant(secondNode.getInstanceName()) .build(), HelixIPCService.IPC_PORT, String.valueOf(secondPort)); + secondNode.getConfigAccessor().set( + new HelixConfigScopeBuilder(HelixConfigScope.ConfigScopeProperty.PARTICIPANT) + .forCluster(secondNode.getClusterName()).forParticipant(secondNode.getInstanceName()) + .build(), HelixIPCService.IPC_HOST, "localhost"); } @AfterClass http://git-wip-us.apache.org/repos/asf/helix/blob/9e51cb7b/helix-ipc/src/test/java/org/apache/helix/resolver/TestZKHelixResolver.java ---------------------------------------------------------------------- diff --git a/helix-ipc/src/test/java/org/apache/helix/resolver/TestZKHelixResolver.java b/helix-ipc/src/test/java/org/apache/helix/resolver/TestZKHelixResolver.java index 4e802d7..843c6b0 100644 --- a/helix-ipc/src/test/java/org/apache/helix/resolver/TestZKHelixResolver.java +++ b/helix-ipc/src/test/java/org/apache/helix/resolver/TestZKHelixResolver.java @@ -77,6 +77,7 @@ public class TestZKHelixResolver extends ZkTestBase { InstanceConfig config = new InstanceConfig(instanceName); config.setHostName(host); config.setPort(Integer.toString(port)); + config.getRecord().setSimpleField("IPC_HOST", host); config.getRecord().setSimpleField("IPC_PORT", Integer.toString(ipcPort)); admin.addInstance(CLUSTER_NAME, config); _socketMap.put(instanceName, new InetSocketAddress(host, ipcPort));
