@Override public HeartbeatMonitor getObject() throws Exception { if (heartbeatMonitor == null && properties.isNode()) { final ClusterCoordinationProtocolSenderListener protocolSenderListener = applicationContext.getBean("clusterCoordinationProtocolSenderListener", ClusterCoordinationProtocolSenderListener.class); final ClusterCoordinator clusterCoordinator = applicationContext.getBean("clusterCoordinator", ClusterCoordinator.class); heartbeatMonitor = new ClusterProtocolHeartbeatMonitor(clusterCoordinator, protocolSenderListener, properties); } return heartbeatMonitor; }
@Override public NodeClusterCoordinator getObject() throws Exception { if (nodeClusterCoordinator == null && properties.isNode()) { final ClusterCoordinationProtocolSenderListener protocolSenderListener = applicationContext.getBean("clusterCoordinationProtocolSenderListener", ClusterCoordinationProtocolSenderListener.class); final EventReporter eventReporter = applicationContext.getBean("eventReporter", EventReporter.class); final ClusterNodeFirewall clusterFirewall = applicationContext.getBean("clusterFirewall", ClusterNodeFirewall.class); final RevisionManager revisionManager = applicationContext.getBean("revisionManager", RevisionManager.class); final LeaderElectionManager electionManager = applicationContext.getBean("leaderElectionManager", LeaderElectionManager.class); final FlowElection flowElection = applicationContext.getBean("flowElection", FlowElection.class); final NodeProtocolSender nodeProtocolSender = applicationContext.getBean("nodeProtocolSender", NodeProtocolSender.class); nodeClusterCoordinator = new NodeClusterCoordinator(protocolSenderListener, eventReporter, electionManager, flowElection, clusterFirewall, revisionManager, properties, extensionManager, nodeProtocolSender); } return nodeClusterCoordinator; }
@Override public LeaderElectionManager getObject() throws Exception { final boolean isNode = properties.isNode(); if (isNode) { return new CuratorLeaderElectionManager(numThreads, properties); } else { return new StandaloneLeaderElectionManager(); } }
@Override public Object getObject() throws Exception { if (flowService == null) { final FlowController flowController = applicationContext.getBean("flowController", FlowController.class); final RevisionManager revisionManager = applicationContext.getBean("revisionManager", RevisionManager.class); if (properties.isNode()) { final NodeProtocolSenderListener nodeProtocolSenderListener = applicationContext.getBean("nodeProtocolSenderListener", NodeProtocolSenderListener.class); final ClusterCoordinator clusterCoordinator = applicationContext.getBean("clusterCoordinator", ClusterCoordinator.class); flowService = StandardFlowService.createClusteredInstance( flowController, properties, nodeProtocolSenderListener, clusterCoordinator, encryptor, revisionManager, authorizer); } else { flowService = StandardFlowService.createStandaloneInstance( flowController, properties, encryptor, revisionManager, authorizer); } } return flowService; }
/** * Checks whether or not the request should be replicated to the cluster * * @return <code>true</code> if the request should be replicated, <code>false</code> otherwise */ boolean isReplicateRequest() { // If not a node in a cluster, we do not replicate if (!properties.isNode()) { return false; } ensureFlowInitialized(); // If not connected to the cluster, we do not replicate if (!isConnectedToCluster()) { return false; } // Check if the X-Request-Replicated header is set. If so, the request has already been replicated, // so we need to service the request locally. If not, then replicate the request to the entire cluster. final String header = httpServletRequest.getHeader(RequestReplicator.REPLICATION_INDICATOR_HEADER); return header == null; }
final FlowFileEventRepository flowFileEventRepository = applicationContext.getBean("flowFileEventRepository", FlowFileEventRepository.class); if (properties.isNode()) { final NodeProtocolSender nodeProtocolSender = applicationContext.getBean("nodeProtocolSender", NodeProtocolSender.class); final HeartbeatMonitor heartbeatMonitor = applicationContext.getBean("heartbeatMonitor", HeartbeatMonitor.class);
@Override public ThreadPoolRequestReplicator getObject() throws Exception { if (replicator == null && nifiProperties.isNode()) { final EventReporter eventReporter = applicationContext.getBean("eventReporter", EventReporter.class); final ClusterCoordinator clusterCoordinator = applicationContext.getBean("clusterCoordinator", ClusterCoordinator.class); final RequestCompletionCallback requestCompletionCallback = applicationContext.getBean("clusterCoordinator", RequestCompletionCallback.class); final int corePoolSize = nifiProperties.getClusterNodeProtocolCorePoolSize(); final int maxPoolSize = nifiProperties.getClusterNodeProtocolMaxPoolSize(); final int maxConcurrentRequests = nifiProperties.getClusterNodeMaxConcurrentRequests(); final OkHttpReplicationClient replicationClient = new OkHttpReplicationClient(nifiProperties); replicator = new ThreadPoolRequestReplicator(corePoolSize, maxPoolSize, maxConcurrentRequests, replicationClient, clusterCoordinator, requestCompletionCallback, eventReporter, nifiProperties); } return replicator; }
public static synchronized StateManagerProvider create(final NiFiProperties properties, final VariableRegistry variableRegistry, final ExtensionManager extensionManager) throws ConfigParseException, IOException { if (provider != null) { return provider; } final StateProvider localProvider = createLocalStateProvider(properties,variableRegistry, extensionManager); final StateProvider clusterProvider; if (properties.isNode()) { clusterProvider = createClusteredStateProvider(properties,variableRegistry, extensionManager); } else { clusterProvider = null; } provider = new StandardStateManagerProvider(localProvider, clusterProvider); return provider; }
if (!properties.isNode()) { logger.info("Starting Flow Controller...");
final boolean modificationNeeded = peerDescriptionModifier.isModificationNeeded(SiteToSiteTransportProtocol.HTTP); final Map<String, String> headers = modificationNeeded ? getHttpHeaders(req) : null; if (properties.isNode()) {
if (props.isNode()) {