Search in sources :

Example 1 with IIPCHandle

use of org.apache.hyracks.ipc.api.IIPCHandle in project asterixdb by apache.

the class IPCTest method test.

@Test
public void test() throws Exception {
    IPCSystem server = createServerIPCSystem();
    server.start();
    InetSocketAddress serverAddr = server.getSocketAddress();
    RPCInterface rpci = new RPCInterface();
    IPCSystem client = createClientIPCSystem(rpci);
    client.start();
    IIPCHandle handle = client.getHandle(serverAddr);
    for (int i = 0; i < 100; ++i) {
        Assert.assertEquals(rpci.call(handle, Integer.valueOf(i)), Integer.valueOf(2 * i));
    }
    try {
        rpci.call(handle, "Foo");
        Assert.assertTrue(false);
    } catch (Exception e) {
        Assert.assertTrue(true);
    }
}
Also used : IIPCHandle(org.apache.hyracks.ipc.api.IIPCHandle) InetSocketAddress(java.net.InetSocketAddress) RPCInterface(org.apache.hyracks.ipc.api.RPCInterface) IOException(java.io.IOException) IPCException(org.apache.hyracks.ipc.exceptions.IPCException) IPCSystem(org.apache.hyracks.ipc.impl.IPCSystem) Test(org.junit.Test)

Example 2 with IIPCHandle

use of org.apache.hyracks.ipc.api.IIPCHandle in project asterixdb by apache.

the class NodeControllerService method start.

@Override
public void start() throws Exception {
    LOGGER.log(Level.INFO, "Starting NodeControllerService");
    if (LOGGER.isLoggable(Level.INFO)) {
        LOGGER.info("Setting uncaught exception handler " + getLifeCycleComponentManager());
    }
    Thread.currentThread().setUncaughtExceptionHandler(getLifeCycleComponentManager());
    Runtime.getRuntime().addShutdownHook(new NCShutdownHook(this));
    ipc = new IPCSystem(new InetSocketAddress(ncConfig.getClusterListenAddress(), ncConfig.getClusterListenPort()), new NodeControllerIPCI(this), new CCNCFunctions.SerializerDeserializer());
    ipc.start();
    partitionManager = new PartitionManager(this);
    netManager = new NetworkManager(ncConfig.getDataListenAddress(), ncConfig.getDataListenPort(), partitionManager, ncConfig.getNetThreadCount(), ncConfig.getNetBufferCount(), ncConfig.getDataPublicAddress(), ncConfig.getDataPublicPort(), FullFrameChannelInterfaceFactory.INSTANCE);
    netManager.start();
    startApplication();
    init();
    datasetNetworkManager.start();
    if (messagingNetManager != null) {
        messagingNetManager.start();
    }
    IIPCHandle ccIPCHandle = ipc.getHandle(new InetSocketAddress(ncConfig.getClusterAddress(), ncConfig.getClusterPort()), ncConfig.getClusterConnectRetries());
    this.ccs = new ClusterControllerRemoteProxy(ccIPCHandle);
    HeartbeatSchema.GarbageCollectorInfo[] gcInfos = new HeartbeatSchema.GarbageCollectorInfo[gcMXBeans.size()];
    for (int i = 0; i < gcInfos.length; ++i) {
        gcInfos[i] = new HeartbeatSchema.GarbageCollectorInfo(gcMXBeans.get(i).getName());
    }
    HeartbeatSchema hbSchema = new HeartbeatSchema(gcInfos);
    // Use "public" versions of network addresses and ports
    NetworkAddress datasetAddress = datasetNetworkManager.getPublicNetworkAddress();
    NetworkAddress netAddress = netManager.getPublicNetworkAddress();
    NetworkAddress meesagingPort = messagingNetManager != null ? messagingNetManager.getPublicNetworkAddress() : null;
    int allCores = osMXBean.getAvailableProcessors();
    ccs.registerNode(new NodeRegistration(ipc.getSocketAddress(), id, ncConfig, netAddress, datasetAddress, osMXBean.getName(), osMXBean.getArch(), osMXBean.getVersion(), allCores, runtimeMXBean.getVmName(), runtimeMXBean.getVmVersion(), runtimeMXBean.getVmVendor(), runtimeMXBean.getClassPath(), runtimeMXBean.getLibraryPath(), runtimeMXBean.getBootClassPath(), runtimeMXBean.getInputArguments(), runtimeMXBean.getSystemProperties(), hbSchema, meesagingPort, application.getCapacity(), PidHelper.getPid()));
    synchronized (this) {
        while (registrationPending) {
            wait();
        }
    }
    if (registrationException != null) {
        throw registrationException;
    }
    serviceCtx.setDistributedState(nodeParameters.getDistributedState());
    workQueue.start();
    heartbeatTask = new HeartbeatTask(ccs);
    // Use reflection to set the priority of the timer thread.
    Field threadField = timer.getClass().getDeclaredField("thread");
    threadField.setAccessible(true);
    // The internal timer thread of the Timer object.
    Thread timerThread = (Thread) threadField.get(timer);
    timerThread.setPriority(Thread.MAX_PRIORITY);
    // Schedule heartbeat generator.
    timer.schedule(heartbeatTask, 0, nodeParameters.getHeartbeatPeriod());
    if (nodeParameters.getProfileDumpPeriod() > 0) {
        // Schedule profile dump generator.
        timer.schedule(new ProfileDumpTask(ccs), 0, nodeParameters.getProfileDumpPeriod());
    }
    LOGGER.log(Level.INFO, "Started NodeControllerService");
    application.startupCompleted();
}
Also used : IIPCHandle(org.apache.hyracks.ipc.api.IIPCHandle) NodeRegistration(org.apache.hyracks.control.common.controllers.NodeRegistration) PartitionManager(org.apache.hyracks.control.nc.partitions.PartitionManager) DatasetPartitionManager(org.apache.hyracks.control.nc.dataset.DatasetPartitionManager) IDatasetPartitionManager(org.apache.hyracks.api.dataset.IDatasetPartitionManager) InetSocketAddress(java.net.InetSocketAddress) IPCSystem(org.apache.hyracks.ipc.impl.IPCSystem) ClusterControllerRemoteProxy(org.apache.hyracks.control.common.ipc.ClusterControllerRemoteProxy) Field(java.lang.reflect.Field) NetworkAddress(org.apache.hyracks.api.comm.NetworkAddress) DatasetNetworkManager(org.apache.hyracks.control.nc.net.DatasetNetworkManager) MessagingNetworkManager(org.apache.hyracks.control.nc.net.MessagingNetworkManager) NetworkManager(org.apache.hyracks.control.nc.net.NetworkManager) HeartbeatSchema(org.apache.hyracks.control.common.heartbeat.HeartbeatSchema)

Example 3 with IIPCHandle

use of org.apache.hyracks.ipc.api.IIPCHandle in project asterixdb by apache.

the class IPCTest method createServerIPCSystem.

private IPCSystem createServerIPCSystem() throws IOException {
    final Executor executor = Executors.newCachedThreadPool();
    IIPCI ipci = new IIPCI() {

        @Override
        public void deliverIncomingMessage(final IIPCHandle handle, final long mid, long rmid, final Object payload, Exception exception) {
            executor.execute(new Runnable() {

                @Override
                public void run() {
                    Object result = null;
                    Exception exception = null;
                    try {
                        Integer i = (Integer) payload;
                        result = i.intValue() * 2;
                    } catch (Exception e) {
                        exception = e;
                    }
                    try {
                        handle.send(mid, result, exception);
                    } catch (IPCException e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    };
    return new IPCSystem(new InetSocketAddress("127.0.0.1", 0), ipci, new JavaSerializationBasedPayloadSerializerDeserializer());
}
Also used : IIPCHandle(org.apache.hyracks.ipc.api.IIPCHandle) IIPCI(org.apache.hyracks.ipc.api.IIPCI) Executor(java.util.concurrent.Executor) JavaSerializationBasedPayloadSerializerDeserializer(org.apache.hyracks.ipc.impl.JavaSerializationBasedPayloadSerializerDeserializer) InetSocketAddress(java.net.InetSocketAddress) IPCException(org.apache.hyracks.ipc.exceptions.IPCException) IOException(java.io.IOException) IPCException(org.apache.hyracks.ipc.exceptions.IPCException) IPCSystem(org.apache.hyracks.ipc.impl.IPCSystem)

Example 4 with IIPCHandle

use of org.apache.hyracks.ipc.api.IIPCHandle in project asterixdb by apache.

the class RegisterNodeWork method doRun.

@Override
protected void doRun() throws Exception {
    String id = reg.getNodeId();
    IIPCHandle ncIPCHandle = ccs.getClusterIPC().getHandle(reg.getNodeControllerAddress());
    CCNCFunctions.NodeRegistrationResult result;
    Map<IOption, Object> ncConfiguration = new HashMap<>();
    try {
        INodeController nodeController = new NodeControllerRemoteProxy(ncIPCHandle);
        NodeControllerState state = new NodeControllerState(nodeController, reg);
        INodeManager nodeManager = ccs.getNodeManager();
        nodeManager.addNode(id, state);
        IApplicationConfig cfg = state.getNCConfig().getConfigManager().getNodeEffectiveConfig(id);
        for (IOption option : cfg.getOptions()) {
            ncConfiguration.put(option, cfg.get(option));
        }
        LOGGER.log(Level.INFO, "Registered INodeController: id = " + id);
        NodeParameters params = new NodeParameters();
        params.setClusterControllerInfo(ccs.getClusterControllerInfo());
        params.setDistributedState(ccs.getContext().getDistributedState());
        params.setHeartbeatPeriod(ccs.getCCConfig().getHeartbeatPeriod());
        params.setProfileDumpPeriod(ccs.getCCConfig().getProfileDumpPeriod());
        result = new CCNCFunctions.NodeRegistrationResult(params, null);
    } catch (Exception e) {
        result = new CCNCFunctions.NodeRegistrationResult(null, e);
    }
    ncIPCHandle.send(-1, result, null);
    ccs.getContext().notifyNodeJoin(id, ncConfiguration);
}
Also used : IIPCHandle(org.apache.hyracks.ipc.api.IIPCHandle) INodeManager(org.apache.hyracks.control.cc.cluster.INodeManager) NodeControllerRemoteProxy(org.apache.hyracks.control.common.ipc.NodeControllerRemoteProxy) INodeController(org.apache.hyracks.control.common.base.INodeController) HashMap(java.util.HashMap) CCNCFunctions(org.apache.hyracks.control.common.ipc.CCNCFunctions) NodeParameters(org.apache.hyracks.control.common.controllers.NodeParameters) IOption(org.apache.hyracks.api.config.IOption) IApplicationConfig(org.apache.hyracks.api.config.IApplicationConfig) NodeControllerState(org.apache.hyracks.control.cc.NodeControllerState)

Aggregations

IIPCHandle (org.apache.hyracks.ipc.api.IIPCHandle)4 InetSocketAddress (java.net.InetSocketAddress)3 IPCSystem (org.apache.hyracks.ipc.impl.IPCSystem)3 IOException (java.io.IOException)2 IPCException (org.apache.hyracks.ipc.exceptions.IPCException)2 Field (java.lang.reflect.Field)1 HashMap (java.util.HashMap)1 Executor (java.util.concurrent.Executor)1 NetworkAddress (org.apache.hyracks.api.comm.NetworkAddress)1 IApplicationConfig (org.apache.hyracks.api.config.IApplicationConfig)1 IOption (org.apache.hyracks.api.config.IOption)1 IDatasetPartitionManager (org.apache.hyracks.api.dataset.IDatasetPartitionManager)1 NodeControllerState (org.apache.hyracks.control.cc.NodeControllerState)1 INodeManager (org.apache.hyracks.control.cc.cluster.INodeManager)1 INodeController (org.apache.hyracks.control.common.base.INodeController)1 NodeParameters (org.apache.hyracks.control.common.controllers.NodeParameters)1 NodeRegistration (org.apache.hyracks.control.common.controllers.NodeRegistration)1 HeartbeatSchema (org.apache.hyracks.control.common.heartbeat.HeartbeatSchema)1 CCNCFunctions (org.apache.hyracks.control.common.ipc.CCNCFunctions)1 ClusterControllerRemoteProxy (org.apache.hyracks.control.common.ipc.ClusterControllerRemoteProxy)1