Search in sources :

Example 16 with Node

use of org.apache.asterix.event.schema.cluster.Node in project asterixdb by apache.

the class AsterixInstance method addDetailedInformation.

private void addDetailedInformation(StringBuilder buffer) {
    buffer.append("Master node:" + cluster.getMasterNode().getId() + ":" + cluster.getMasterNode().getClusterIp() + "\n");
    for (Node node : cluster.getNode()) {
        buffer.append(node.getId() + ":" + node.getClusterIp() + "\n");
    }
    if (backupInfo != null && backupInfo.size() > 0) {
        for (BackupInfo info : backupInfo) {
            buffer.append(info + "\n");
        }
    }
    buffer.append("\n");
    buffer.append("Asterix version:" + asterixVersion + "\n");
    buffer.append("Metadata Node:" + metadataNodeId + "\n");
    buffer.append("Processes" + "\n");
    for (ProcessInfo pInfo : runtimeState.getProcesses()) {
        buffer.append(pInfo + "\n");
    }
    buffer.append("\n");
    buffer.append("Asterix Configuration\n");
    int lenMax = 0;
    for (Property property : asterixConfiguration.getProperty()) {
        int nextLen = property.getName().length();
        if (nextLen > lenMax) {
            lenMax = nextLen;
        }
    }
    for (Property property : asterixConfiguration.getProperty()) {
        buffer.append(property.getName() + getIndentation(property.getName(), lenMax) + ":" + property.getValue() + "\n");
    }
}
Also used : Node(org.apache.asterix.event.schema.cluster.Node) Property(org.apache.asterix.common.configuration.Property)

Example 17 with Node

use of org.apache.asterix.event.schema.cluster.Node in project asterixdb by apache.

the class AsterixEventServiceUtil method createAsterixInstance.

public static AsterixInstance createAsterixInstance(String asterixInstanceName, Cluster cluster, AsterixConfiguration asterixConfiguration) throws IOException {
    Node metadataNode = getMetadataNode(asterixInstanceName, cluster);
    String asterixZipName = asterixZipName();
    String asterixVersion = asterixZipName.substring("asterix-server-".length(), asterixZipName.indexOf("-binary-assembly"));
    return new AsterixInstance(asterixInstanceName, cluster, asterixConfiguration, metadataNode.getId(), asterixVersion);
}
Also used : Node(org.apache.asterix.event.schema.cluster.Node) AsterixInstance(org.apache.asterix.event.model.AsterixInstance)

Example 18 with Node

use of org.apache.asterix.event.schema.cluster.Node in project asterixdb by apache.

the class NCApplication method updateOnNodeJoin.

private void updateOnNodeJoin() {
    MetadataProperties metadataProperties = runtimeContext.getMetadataProperties();
    if (!metadataProperties.getNodeNames().contains(nodeId)) {
        Cluster cluster = ClusterProperties.INSTANCE.getCluster();
        if (cluster == null) {
            throw new IllegalStateException("No cluster configuration found for this instance");
        }
        NCConfig ncConfig = ((NodeControllerService) ncServiceCtx.getControllerService()).getConfiguration();
        ncConfig.getConfigManager().registerVirtualNode(nodeId);
        String asterixInstanceName = metadataProperties.getInstanceName();
        TransactionProperties txnProperties = runtimeContext.getTransactionProperties();
        Node self = null;
        List<Node> nodes;
        if (cluster.getSubstituteNodes() != null) {
            nodes = cluster.getSubstituteNodes().getNode();
        } else {
            throw new IllegalStateException("Unknown node joining the cluster");
        }
        for (Node node : nodes) {
            String ncId = asterixInstanceName + "_" + node.getId();
            if (ncId.equalsIgnoreCase(nodeId)) {
                String storeDir = ClusterProperties.INSTANCE.getStorageDirectoryName();
                String nodeIoDevices = node.getIodevices() == null ? cluster.getIodevices() : node.getIodevices();
                String[] ioDevicePaths = nodeIoDevices.trim().split(",");
                for (int i = 0; i < ioDevicePaths.length; i++) {
                    // construct full store path
                    ioDevicePaths[i] += File.separator + storeDir;
                }
                metadataProperties.getStores().put(nodeId, ioDevicePaths);
                String coredumpPath = node.getLogDir() == null ? cluster.getLogDir() : node.getLogDir();
                metadataProperties.getCoredumpPaths().put(nodeId, coredumpPath);
                String txnLogDir = node.getTxnLogDir() == null ? cluster.getTxnLogDir() : node.getTxnLogDir();
                txnProperties.getLogDirectories().put(nodeId, txnLogDir);
                if (LOGGER.isLoggable(Level.INFO)) {
                    LOGGER.info("Store set to : " + storeDir);
                    LOGGER.info("Coredump dir set to : " + coredumpPath);
                    LOGGER.info("Transaction log dir set to :" + txnLogDir);
                }
                self = node;
                break;
            }
        }
        if (self != null) {
            cluster.getSubstituteNodes().getNode().remove(self);
            cluster.getNode().add(self);
        } else {
            throw new IllegalStateException("Unknown node joining the cluster");
        }
    }
}
Also used : NodeControllerService(org.apache.hyracks.control.nc.NodeControllerService) NCConfig(org.apache.hyracks.control.common.controllers.NCConfig) TransactionProperties(org.apache.asterix.common.config.TransactionProperties) Node(org.apache.asterix.event.schema.cluster.Node) Cluster(org.apache.asterix.event.schema.cluster.Cluster) MetadataProperties(org.apache.asterix.common.config.MetadataProperties)

Example 19 with Node

use of org.apache.asterix.event.schema.cluster.Node in project asterixdb by apache.

the class ClusterLifecycleListener method executeWorkSet.

private void executeWorkSet(Set<IClusterManagementWork> workSet) {
    int nodesToAdd = 0;
    Set<String> nodesToRemove = new HashSet<>();
    Set<AddNodeWork> nodeAdditionRequests = new HashSet<>();
    Set<IClusterManagementWork> nodeRemovalRequests = new HashSet<>();
    for (IClusterManagementWork w : workSet) {
        switch(w.getClusterManagementWorkType()) {
            case ADD_NODE:
                if (nodesToAdd < ((AddNodeWork) w).getNumberOfNodesRequested()) {
                    nodesToAdd = ((AddNodeWork) w).getNumberOfNodesRequested();
                }
                nodeAdditionRequests.add((AddNodeWork) w);
                break;
            case REMOVE_NODE:
                nodesToRemove.addAll(((RemoveNodeWork) w).getNodesToBeRemoved());
                nodeRemovalRequests.add(w);
                RemoveNodeWorkResponse response = new RemoveNodeWorkResponse((RemoveNodeWork) w, Status.IN_PROGRESS);
                pendingWorkResponses.add(response);
                break;
        }
    }
    List<String> addedNodes = new ArrayList<>();
    String asterixInstanceName = ClusterProperties.INSTANCE.getCluster().getInstanceName();
    for (int i = 0; i < nodesToAdd; i++) {
        Node node = ClusterStateManager.INSTANCE.getAvailableSubstitutionNode();
        if (node != null) {
            try {
                ClusterManagerProvider.getClusterManager().addNode(appCtx, node);
                addedNodes.add(asterixInstanceName + "_" + node.getId());
                if (LOGGER.isLoggable(Level.INFO)) {
                    LOGGER.info("Added NC at:" + node.getId());
                }
            } catch (AsterixException e) {
                if (LOGGER.isLoggable(Level.WARNING)) {
                    LOGGER.warning("Unable to add NC at:" + node.getId());
                }
                e.printStackTrace();
            }
        } else {
            if (LOGGER.isLoggable(Level.WARNING)) {
                LOGGER.warning("Unable to add NC: no more available nodes");
            }
        }
    }
    for (AddNodeWork w : nodeAdditionRequests) {
        int n = w.getNumberOfNodesRequested();
        List<String> nodesToBeAddedForWork = new ArrayList<>();
        for (int i = 0; i < n && i < addedNodes.size(); i++) {
            nodesToBeAddedForWork.add(addedNodes.get(i));
        }
        if (nodesToBeAddedForWork.isEmpty()) {
            if (LOGGER.isLoggable(Level.INFO)) {
                LOGGER.info("Unable to satisfy request by " + w);
            }
            AddNodeWorkResponse response = new AddNodeWorkResponse(w, nodesToBeAddedForWork);
            response.setStatus(Status.FAILURE);
            w.getSourceSubscriber().notifyRequestCompletion(response);
        } else {
            AddNodeWorkResponse response = new AddNodeWorkResponse(w, nodesToBeAddedForWork);
            pendingWorkResponses.add(response);
        }
    }
}
Also used : Node(org.apache.asterix.event.schema.cluster.Node) IClusterManagementWork(org.apache.asterix.common.api.IClusterManagementWork) ArrayList(java.util.ArrayList) AsterixException(org.apache.asterix.common.exceptions.AsterixException) RemoveNodeWorkResponse(org.apache.asterix.metadata.cluster.RemoveNodeWorkResponse) AddNodeWork(org.apache.asterix.metadata.cluster.AddNodeWork) AddNodeWorkResponse(org.apache.asterix.metadata.cluster.AddNodeWorkResponse) HashSet(java.util.HashSet)

Example 20 with Node

use of org.apache.asterix.event.schema.cluster.Node in project asterixdb by apache.

the class EventUtil method getEventLocation.

public static Node getEventLocation(Pattern pattern, List<Node> candidateLocations, Cluster cluster) {
    ValueType value = new ValueType(pattern.getEvent().getNodeid().getValue());
    Node location = null;
    Type vtype = value.getType();
    switch(vtype) {
        case ABS:
            location = getNodeFromId(value.getAbsoluteValue(), cluster);
            break;
        case RANDOM_RANGE:
            int nodeIndex = Randomizer.getInstance().getRandomInt(0, candidateLocations.size() - 1);
            location = candidateLocations.get(nodeIndex);
            break;
        case RANDOM_MIN_MAX:
            throw new IllegalStateException(" Canont configure a min max value range for location");
    }
    return location;
}
Also used : Type(org.apache.asterix.event.management.ValueType.Type) Node(org.apache.asterix.event.schema.cluster.Node)

Aggregations

Node (org.apache.asterix.event.schema.cluster.Node)43 ArrayList (java.util.ArrayList)29 Pattern (org.apache.asterix.event.schema.pattern.Pattern)21 Patterns (org.apache.asterix.event.schema.pattern.Patterns)21 Cluster (org.apache.asterix.event.schema.cluster.Cluster)20 Nodeid (org.apache.asterix.event.schema.pattern.Nodeid)16 Value (org.apache.asterix.event.schema.pattern.Value)16 Event (org.apache.asterix.event.schema.pattern.Event)15 File (java.io.File)5 HashSet (java.util.HashSet)5 AsterixInstance (org.apache.asterix.event.model.AsterixInstance)5 FileOutputStream (java.io.FileOutputStream)3 JAXBContext (javax.xml.bind.JAXBContext)3 Marshaller (javax.xml.bind.Marshaller)3 AsterixEventServiceClient (org.apache.asterix.event.management.AsterixEventServiceClient)3 AsterixRuntimeState (org.apache.asterix.event.model.AsterixRuntimeState)3 ProcessInfo (org.apache.asterix.event.model.ProcessInfo)3 Date (java.util.Date)2 IClusterManagementWork (org.apache.asterix.common.api.IClusterManagementWork)2 AsterixException (org.apache.asterix.common.exceptions.AsterixException)2