blob: f23e65042c0dab7fa6fe24822c99555b2a4041a7 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ignite.internal;
import java.io.Externalizable;
import java.io.IOException;
import java.io.InvalidObjectException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.ObjectStreamException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.failure.FailureType;
import org.apache.ignite.internal.managers.encryption.GridEncryptionManager;
import org.apache.ignite.internal.managers.checkpoint.GridCheckpointManager;
import org.apache.ignite.internal.managers.collision.GridCollisionManager;
import org.apache.ignite.internal.managers.communication.GridIoManager;
import org.apache.ignite.internal.managers.deployment.GridDeploymentManager;
import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager;
import org.apache.ignite.internal.managers.failover.GridFailoverManager;
import org.apache.ignite.internal.managers.indexing.GridIndexingManager;
import org.apache.ignite.internal.managers.loadbalancer.GridLoadBalancerManager;
import org.apache.ignite.internal.processors.cache.mvcc.MvccProcessor;
import org.apache.ignite.internal.worker.WorkersRegistry;
import org.apache.ignite.internal.processors.affinity.GridAffinityProcessor;
import org.apache.ignite.internal.processors.authentication.IgniteAuthenticationProcessor;
import org.apache.ignite.internal.processors.cache.CacheConflictResolutionManager;
import org.apache.ignite.internal.processors.cache.GridCacheProcessor;
import org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl;
import org.apache.ignite.internal.processors.cache.persistence.filename.PdsFoldersResolver;
import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
import org.apache.ignite.internal.processors.closure.GridClosureProcessor;
import org.apache.ignite.internal.processors.cluster.ClusterProcessor;
import org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor;
import org.apache.ignite.internal.processors.continuous.GridContinuousProcessor;
import org.apache.ignite.internal.processors.datastreamer.DataStreamProcessor;
import org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor;
import org.apache.ignite.internal.processors.failure.FailureProcessor;
import org.apache.ignite.internal.processors.hadoop.HadoopHelper;
import org.apache.ignite.internal.processors.hadoop.HadoopProcessorAdapter;
import org.apache.ignite.internal.processors.igfs.IgfsHelper;
import org.apache.ignite.internal.processors.igfs.IgfsProcessorAdapter;
import org.apache.ignite.internal.processors.job.GridJobProcessor;
import org.apache.ignite.internal.processors.jobmetrics.GridJobMetricsProcessor;
import org.apache.ignite.internal.processors.marshaller.GridMarshallerMappingProcessor;
import org.apache.ignite.internal.processors.nodevalidation.DiscoveryNodeValidationProcessor;
import org.apache.ignite.internal.processors.odbc.ClientListenerProcessor;
import org.apache.ignite.internal.processors.platform.PlatformProcessor;
import org.apache.ignite.internal.processors.platform.plugin.PlatformPluginProcessor;
import org.apache.ignite.internal.processors.plugin.IgnitePluginProcessor;
import org.apache.ignite.internal.processors.pool.PoolProcessor;
import org.apache.ignite.internal.processors.port.GridPortProcessor;
import org.apache.ignite.internal.processors.query.GridQueryProcessor;
import org.apache.ignite.internal.processors.resource.GridResourceProcessor;
import org.apache.ignite.internal.processors.rest.GridRestProcessor;
import org.apache.ignite.internal.processors.schedule.IgniteScheduleProcessorAdapter;
import org.apache.ignite.internal.processors.security.GridSecurityProcessor;
import org.apache.ignite.internal.processors.segmentation.GridSegmentationProcessor;
import org.apache.ignite.internal.processors.service.GridServiceProcessor;
import org.apache.ignite.internal.processors.session.GridTaskSessionProcessor;
import org.apache.ignite.internal.processors.subscription.GridInternalSubscriptionProcessor;
import org.apache.ignite.internal.processors.task.GridTaskProcessor;
import org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor;
import org.apache.ignite.internal.suggestions.GridPerformanceSuggestions;
import org.apache.ignite.internal.util.IgniteExceptionRegistry;
import org.apache.ignite.internal.util.StripedExecutor;
import org.apache.ignite.internal.util.spring.IgniteSpringHelper;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.plugin.PluginNotFoundException;
import org.apache.ignite.plugin.PluginProvider;
import org.apache.ignite.thread.IgniteStripedThreadPoolExecutor;
import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_DAEMON;
import static org.apache.ignite.internal.IgniteComponentType.SPRING;
/**
* Implementation of kernal context.
*/
@GridToStringExclude
public class GridKernalContextImpl implements GridKernalContext, Externalizable {
/** */
private static final long serialVersionUID = 0L;
/** */
private static final ThreadLocal<String> stash = new ThreadLocal<>();
/*
* Managers.
* ========
*/
/** */
@GridToStringExclude
private GridDeploymentManager depMgr;
/** */
@GridToStringExclude
private GridIoManager ioMgr;
/** */
@GridToStringExclude
private GridDiscoveryManager discoMgr;
/** */
@GridToStringExclude
private GridCheckpointManager cpMgr;
/** */
@GridToStringExclude
private GridEventStorageManager evtMgr;
/** */
@GridToStringExclude
private GridFailoverManager failoverMgr;
/** */
@GridToStringExclude
private GridCollisionManager colMgr;
/** */
@GridToStringExclude
private GridLoadBalancerManager loadMgr;
/** */
@GridToStringExclude
private GridSecurityProcessor securityProc;
/** */
@GridToStringExclude
private GridIndexingManager indexingMgr;
/** */
@GridToStringExclude
private GridEncryptionManager encryptionMgr;
/*
* Processors.
* ==========
*/
/** */
@GridToStringInclude
private ClientListenerProcessor sqlListenerProc;
/** */
@GridToStringInclude
private GridQueryProcessor qryProc;
/** */
@GridToStringInclude
private GridTaskProcessor taskProc;
/** */
@GridToStringInclude
private GridJobProcessor jobProc;
/** */
@GridToStringInclude
private GridTimeoutProcessor timeProc;
/** */
@GridToStringInclude
private GridResourceProcessor rsrcProc;
/** */
@GridToStringInclude
private GridJobMetricsProcessor metricsProc;
/** */
@GridToStringInclude
private GridClosureProcessor closProc;
/** */
@GridToStringInclude
private GridServiceProcessor svcProc;
/** */
@GridToStringInclude
private GridCacheProcessor cacheProc;
/** Cluster state process. */
@GridToStringInclude
private GridClusterStateProcessor stateProc;
/** */
@GridToStringInclude
private GridTaskSessionProcessor sesProc;
/** */
@GridToStringInclude
private GridPortProcessor portProc;
/** */
@GridToStringInclude
private IgniteScheduleProcessorAdapter scheduleProc;
/** */
@GridToStringInclude
private GridRestProcessor restProc;
/** */
@GridToStringInclude
private DataStreamProcessor dataLdrProc;
/** */
@GridToStringInclude
private IgfsProcessorAdapter igfsProc;
/** */
@GridToStringInclude
private IgfsHelper igfsHelper;
/** */
@GridToStringInclude
private HadoopHelper hadoopHelper;
/** */
@GridToStringInclude
private GridSegmentationProcessor segProc;
/** */
@GridToStringInclude
private GridAffinityProcessor affProc;
/** */
@GridToStringExclude
private GridContinuousProcessor contProc;
/** */
@GridToStringExclude
private HadoopProcessorAdapter hadoopProc;
/** */
@GridToStringExclude
private PoolProcessor poolProc;
/** */
@GridToStringExclude
private GridMarshallerMappingProcessor mappingProc;
/** */
@GridToStringExclude
private IgnitePluginProcessor pluginProc;
/** */
@GridToStringExclude
private IgniteCacheObjectProcessor cacheObjProc;
/** */
@GridToStringExclude
private PlatformProcessor platformProc;
/** */
@GridToStringExclude
private IgniteSpringHelper spring;
/** */
@GridToStringExclude
private ClusterProcessor cluster;
/** */
@GridToStringExclude
private DataStructuresProcessor dataStructuresProc;
/** Cache mvcc coordinators. */
@GridToStringExclude
private MvccProcessor coordProc;
/** */
@GridToStringExclude
private IgniteAuthenticationProcessor authProc;
/** */
@GridToStringExclude
private List<GridComponent> comps = new LinkedList<>();
/** */
@GridToStringExclude
protected ExecutorService execSvc;
/** */
@GridToStringExclude
protected ExecutorService svcExecSvc;
/** */
@GridToStringExclude
protected ExecutorService sysExecSvc;
/** */
@GridToStringExclude
protected StripedExecutor stripedExecSvc;
/** */
@GridToStringExclude
private ExecutorService p2pExecSvc;
/** */
@GridToStringExclude
private ExecutorService mgmtExecSvc;
/** */
@GridToStringExclude
private ExecutorService igfsExecSvc;
/** */
@GridToStringExclude
private StripedExecutor dataStreamExecSvc;
/** */
@GridToStringExclude
protected ExecutorService restExecSvc;
/** */
@GridToStringExclude
protected ExecutorService affExecSvc;
/** */
@GridToStringExclude
protected ExecutorService idxExecSvc;
/** */
@GridToStringExclude
protected IgniteStripedThreadPoolExecutor callbackExecSvc;
/** */
@GridToStringExclude
protected ExecutorService qryExecSvc;
/** */
@GridToStringExclude
protected ExecutorService schemaExecSvc;
/** */
@GridToStringExclude
private Map<String, ? extends ExecutorService> customExecSvcs;
/** */
@GridToStringExclude
private Map<String, Object> attrs = new HashMap<>();
/** */
@GridToStringExclude
private WorkersRegistry workersRegistry;
/** */
private Thread.UncaughtExceptionHandler hnd;
/** */
private IgniteEx grid;
/** */
private ExecutorService utilityCachePool;
/** */
private IgniteConfiguration cfg;
/** */
private GridKernalGateway gw;
/** Network segmented flag. */
private volatile boolean segFlag;
/** Performance suggestions. */
private final GridPerformanceSuggestions perf = new GridPerformanceSuggestions();
/** Marshaller context. */
private MarshallerContextImpl marshCtx;
/** */
private ClusterNode locNode;
/** */
private volatile boolean disconnected;
/** PDS mode folder name resolver, also generates consistent ID in case new folder naming is used */
private PdsFoldersResolver pdsFolderRslvr;
/** */
private GridInternalSubscriptionProcessor internalSubscriptionProc;
/** Failure processor. */
private FailureProcessor failureProc;
/**
* No-arg constructor is required by externalization.
*/
public GridKernalContextImpl() {
// No-op.
}
/**
* Creates new kernal context.
*
* @param log Logger.
* @param grid Grid instance managed by kernal.
* @param cfg Grid configuration.
* @param gw Kernal gateway.
* @param utilityCachePool Utility cache pool.
* @param execSvc Public executor service.
* @param sysExecSvc System executor service.
* @param stripedExecSvc Striped executor.
* @param p2pExecSvc P2P executor service.
* @param mgmtExecSvc Management executor service.
* @param igfsExecSvc IGFS executor service.
* @param dataStreamExecSvc data stream executor service.
* @param restExecSvc REST executor service.
* @param affExecSvc Affinity executor service.
* @param idxExecSvc Indexing executor service.
* @param callbackExecSvc Callback executor service.
* @param qryExecSvc Query executor service.
* @param schemaExecSvc Schema executor service.
* @param customExecSvcs Custom named executors.
* @param plugins Plugin providers.
* @param workerRegistry Worker registry.
* @param hnd Default uncaught exception handler used by thread pools.
*/
@SuppressWarnings("TypeMayBeWeakened")
protected GridKernalContextImpl(
GridLoggerProxy log,
IgniteEx grid,
IgniteConfiguration cfg,
GridKernalGateway gw,
ExecutorService utilityCachePool,
ExecutorService execSvc,
ExecutorService svcExecSvc,
ExecutorService sysExecSvc,
StripedExecutor stripedExecSvc,
ExecutorService p2pExecSvc,
ExecutorService mgmtExecSvc,
ExecutorService igfsExecSvc,
StripedExecutor dataStreamExecSvc,
ExecutorService restExecSvc,
ExecutorService affExecSvc,
@Nullable ExecutorService idxExecSvc,
IgniteStripedThreadPoolExecutor callbackExecSvc,
ExecutorService qryExecSvc,
ExecutorService schemaExecSvc,
@Nullable Map<String, ? extends ExecutorService> customExecSvcs,
List<PluginProvider> plugins,
IgnitePredicate<String> clsFilter,
WorkersRegistry workerRegistry,
Thread.UncaughtExceptionHandler hnd
) {
assert grid != null;
assert cfg != null;
assert gw != null;
this.grid = grid;
this.cfg = cfg;
this.gw = gw;
this.utilityCachePool = utilityCachePool;
this.execSvc = execSvc;
this.svcExecSvc = svcExecSvc;
this.sysExecSvc = sysExecSvc;
this.stripedExecSvc = stripedExecSvc;
this.p2pExecSvc = p2pExecSvc;
this.mgmtExecSvc = mgmtExecSvc;
this.igfsExecSvc = igfsExecSvc;
this.dataStreamExecSvc = dataStreamExecSvc;
this.restExecSvc = restExecSvc;
this.affExecSvc = affExecSvc;
this.idxExecSvc = idxExecSvc;
this.callbackExecSvc = callbackExecSvc;
this.qryExecSvc = qryExecSvc;
this.schemaExecSvc = schemaExecSvc;
this.customExecSvcs = customExecSvcs;
this.workersRegistry = workerRegistry;
this.hnd = hnd;
marshCtx = new MarshallerContextImpl(plugins, clsFilter);
try {
spring = SPRING.create(false);
}
catch (IgniteCheckedException ignored) {
if (log != null && log.isDebugEnabled())
log.debug("Failed to load spring component, will not be able to extract userVersion from " +
"META-INF/ignite.xml.");
}
}
/** {@inheritDoc} */
@Override public Iterator<GridComponent> iterator() {
return comps.iterator();
}
/** {@inheritDoc} */
@Override public List<GridComponent> components() {
return Collections.unmodifiableList(comps);
}
/**
* @param comp Manager to add.
*/
public void add(GridComponent comp) {
add(comp, true);
}
/**
* @param comp Manager to add.
* @param addToList If {@code true} component is added to components list.
*/
public void add(GridComponent comp, boolean addToList) {
assert comp != null;
/*
* Managers.
* ========
*/
if (comp instanceof GridDeploymentManager)
depMgr = (GridDeploymentManager)comp;
else if (comp instanceof GridIoManager)
ioMgr = (GridIoManager)comp;
else if (comp instanceof GridDiscoveryManager)
discoMgr = (GridDiscoveryManager)comp;
else if (comp instanceof GridCheckpointManager)
cpMgr = (GridCheckpointManager)comp;
else if (comp instanceof GridEventStorageManager)
evtMgr = (GridEventStorageManager)comp;
else if (comp instanceof GridFailoverManager)
failoverMgr = (GridFailoverManager)comp;
else if (comp instanceof GridCollisionManager)
colMgr = (GridCollisionManager)comp;
else if (comp instanceof GridSecurityProcessor)
securityProc = (GridSecurityProcessor)comp;
else if (comp instanceof GridLoadBalancerManager)
loadMgr = (GridLoadBalancerManager)comp;
else if (comp instanceof GridIndexingManager)
indexingMgr = (GridIndexingManager)comp;
else if (comp instanceof GridEncryptionManager)
encryptionMgr = (GridEncryptionManager)comp;
/*
* Processors.
* ==========
*/
else if (comp instanceof FailureProcessor)
failureProc = (FailureProcessor)comp;
else if (comp instanceof GridTaskProcessor)
taskProc = (GridTaskProcessor)comp;
else if (comp instanceof GridJobProcessor)
jobProc = (GridJobProcessor)comp;
else if (comp instanceof GridTimeoutProcessor)
timeProc = (GridTimeoutProcessor)comp;
else if (comp instanceof GridResourceProcessor)
rsrcProc = (GridResourceProcessor)comp;
else if (comp instanceof GridJobMetricsProcessor)
metricsProc = (GridJobMetricsProcessor)comp;
else if (comp instanceof GridCacheProcessor)
cacheProc = (GridCacheProcessor)comp;
else if (comp instanceof GridClusterStateProcessor)
stateProc = (GridClusterStateProcessor)comp;
else if (comp instanceof GridTaskSessionProcessor)
sesProc = (GridTaskSessionProcessor)comp;
else if (comp instanceof GridPortProcessor)
portProc = (GridPortProcessor)comp;
else if (comp instanceof GridClosureProcessor)
closProc = (GridClosureProcessor)comp;
else if (comp instanceof GridServiceProcessor)
svcProc = (GridServiceProcessor)comp;
else if (comp instanceof IgniteScheduleProcessorAdapter)
scheduleProc = (IgniteScheduleProcessorAdapter)comp;
else if (comp instanceof GridSegmentationProcessor)
segProc = (GridSegmentationProcessor)comp;
else if (comp instanceof GridAffinityProcessor)
affProc = (GridAffinityProcessor)comp;
else if (comp instanceof GridRestProcessor)
restProc = (GridRestProcessor)comp;
else if (comp instanceof DataStreamProcessor)
dataLdrProc = (DataStreamProcessor)comp;
else if (comp instanceof IgfsProcessorAdapter)
igfsProc = (IgfsProcessorAdapter)comp;
else if (comp instanceof GridContinuousProcessor)
contProc = (GridContinuousProcessor)comp;
else if (comp instanceof HadoopProcessorAdapter)
hadoopProc = (HadoopProcessorAdapter)comp;
else if (comp instanceof IgniteCacheObjectProcessor)
cacheObjProc = (IgniteCacheObjectProcessor)comp;
else if (comp instanceof IgnitePluginProcessor)
pluginProc = (IgnitePluginProcessor)comp;
else if (comp instanceof GridQueryProcessor)
qryProc = (GridQueryProcessor)comp;
else if (comp instanceof ClientListenerProcessor)
sqlListenerProc = (ClientListenerProcessor)comp;
else if (comp instanceof DataStructuresProcessor)
dataStructuresProc = (DataStructuresProcessor)comp;
else if (comp instanceof ClusterProcessor)
cluster = (ClusterProcessor)comp;
else if (comp instanceof PlatformProcessor)
platformProc = (PlatformProcessor)comp;
else if (comp instanceof PoolProcessor)
poolProc = (PoolProcessor)comp;
else if (comp instanceof GridMarshallerMappingProcessor)
mappingProc = (GridMarshallerMappingProcessor)comp;
else if (comp instanceof MvccProcessor)
coordProc = (MvccProcessor)comp;
else if (comp instanceof PdsFoldersResolver)
pdsFolderRslvr = (PdsFoldersResolver)comp;
else if (comp instanceof GridInternalSubscriptionProcessor)
internalSubscriptionProc = (GridInternalSubscriptionProcessor)comp;
else if (comp instanceof IgniteAuthenticationProcessor)
authProc = (IgniteAuthenticationProcessor)comp;
else if (!(comp instanceof DiscoveryNodeValidationProcessor
|| comp instanceof PlatformPluginProcessor))
assert (comp instanceof GridPluginComponent) : "Unknown manager class: " + comp.getClass();
if (addToList)
comps.add(comp);
}
/**
* @param helper Helper to add.
*/
public void addHelper(Object helper) {
assert helper != null;
if (helper instanceof IgfsHelper)
igfsHelper = (IgfsHelper)helper;
else if (helper instanceof HadoopHelper)
hadoopHelper = (HadoopHelper)helper;
else
assert false : "Unknown helper class: " + helper.getClass();
}
/** {@inheritDoc} */
@Override public boolean isStopping() {
return ((IgniteKernal)grid).isStopping();
}
/** */
@Nullable private ClusterNode localNode() {
if (locNode == null && discoMgr != null)
locNode = discoMgr.localNode();
return locNode;
}
/** {@inheritDoc} */
@Override public UUID localNodeId() {
ClusterNode locNode0 = localNode();
return locNode0 != null ? locNode0.id() : config().getNodeId();
}
/** {@inheritDoc} */
@Override public String igniteInstanceName() {
return cfg.getIgniteInstanceName();
}
/** {@inheritDoc} */
@Override public GridKernalGateway gateway() {
return gw;
}
/** {@inheritDoc} */
@Override public IgniteEx grid() {
return grid;
}
/** {@inheritDoc} */
@Override public IgniteConfiguration config() {
return cfg;
}
/** {@inheritDoc} */
@Override public GridTaskProcessor task() {
return taskProc;
}
/** {@inheritDoc} */
@Override public GridJobProcessor job() {
return jobProc;
}
/** {@inheritDoc} */
@Override public GridTimeoutProcessor timeout() {
return timeProc;
}
/** {@inheritDoc} */
@Override public GridResourceProcessor resource() {
return rsrcProc;
}
/** {@inheritDoc} */
@Override public GridJobMetricsProcessor jobMetric() {
return metricsProc;
}
/** {@inheritDoc} */
@Override public GridCacheProcessor cache() {
return cacheProc;
}
/** {@inheritDoc} */
@Override public GridClusterStateProcessor state() {
return stateProc;
}
/** {@inheritDoc} */
@Override public GridTaskSessionProcessor session() {
return sesProc;
}
/** {@inheritDoc} */
@Override public GridClosureProcessor closure() {
return closProc;
}
/** {@inheritDoc} */
@Override public GridServiceProcessor service() {
return svcProc;
}
/** {@inheritDoc} */
@Override public GridPortProcessor ports() {
return portProc;
}
/** {@inheritDoc} */
@Override public IgniteScheduleProcessorAdapter schedule() {
return scheduleProc;
}
/** {@inheritDoc} */
@Override public GridDeploymentManager deploy() {
return depMgr;
}
/** {@inheritDoc} */
@Override public GridIoManager io() {
return ioMgr;
}
/** {@inheritDoc} */
@Override public GridDiscoveryManager discovery() {
return discoMgr;
}
/** {@inheritDoc} */
@Override public GridCheckpointManager checkpoint() {
return cpMgr;
}
/** {@inheritDoc} */
@Override public GridEventStorageManager event() {
return evtMgr;
}
/** {@inheritDoc} */
@Override public GridFailoverManager failover() {
return failoverMgr;
}
/** {@inheritDoc} */
@Override public GridCollisionManager collision() {
return colMgr;
}
/** {@inheritDoc} */
@Override public GridSecurityProcessor security() {
return securityProc;
}
/** {@inheritDoc} */
@Override public GridLoadBalancerManager loadBalancing() {
return loadMgr;
}
/** {@inheritDoc} */
@Override public GridIndexingManager indexing() {
return indexingMgr;
}
/** {@inheritDoc} */
@Override public GridEncryptionManager encryption() {
return encryptionMgr;
}
/** {@inheritDoc} */
@Override public WorkersRegistry workersRegistry() {
return workersRegistry;
}
/** {@inheritDoc} */
@Override public GridAffinityProcessor affinity() {
return affProc;
}
/** {@inheritDoc} */
@Override public GridRestProcessor rest() {
return restProc;
}
/** {@inheritDoc} */
@Override public GridSegmentationProcessor segmentation() {
return segProc;
}
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
@Override public <K, V> DataStreamProcessor<K, V> dataStream() {
return (DataStreamProcessor<K, V>)dataLdrProc;
}
/** {@inheritDoc} */
@Override public IgfsProcessorAdapter igfs() {
return igfsProc;
}
/** {@inheritDoc} */
@Override public IgfsHelper igfsHelper() {
return igfsHelper;
}
/** {@inheritDoc} */
@Override public HadoopHelper hadoopHelper() {
return hadoopHelper;
}
/** {@inheritDoc} */
@Override public GridContinuousProcessor continuous() {
return contProc;
}
/** {@inheritDoc} */
@Override public HadoopProcessorAdapter hadoop() {
return hadoopProc;
}
/** {@inheritDoc} */
@Override public PoolProcessor pools() {
return poolProc;
}
/** {@inheritDoc} */
@Override public GridMarshallerMappingProcessor mapping() {
return mappingProc;
}
/** {@inheritDoc} */
@Override public ExecutorService utilityCachePool() {
return utilityCachePool;
}
/** {@inheritDoc} */
@Override public IgniteStripedThreadPoolExecutor asyncCallbackPool() {
return callbackExecSvc;
}
/** {@inheritDoc} */
@Override public IgniteCacheObjectProcessor cacheObjects() {
return cacheObjProc;
}
/** {@inheritDoc} */
@Override public GridQueryProcessor query() {
return qryProc;
}
/** {@inheritDoc} */
@Override public ClientListenerProcessor sqlListener() {
return sqlListenerProc;
}
/** {@inheritDoc} */
@Override public DataStructuresProcessor dataStructures() {
return dataStructuresProc;
}
/** {@inheritDoc} */
@Override public MvccProcessor coordinators() {
return coordProc;
}
/** {@inheritDoc} */
@Override public IgniteAuthenticationProcessor authentication() {
return authProc;
}
/** {@inheritDoc} */
@Override public IgniteLogger log(String ctgr) {
return config().getGridLogger().getLogger(ctgr);
}
/** {@inheritDoc} */
@Override public IgniteLogger log(Class<?> cls) {
return log(cls.getName());
}
/** {@inheritDoc} */
@Override public GridPerformanceSuggestions performance() {
return perf;
}
/** {@inheritDoc} */
@Override public void printMemoryStats() {
X.println(">>> ");
X.println(">>> Grid memory stats [igniteInstanceName=" + igniteInstanceName() + ']');
for (GridComponent comp : comps)
comp.printMemoryStats();
}
/** {@inheritDoc} */
@Override public boolean isDaemon() {
ClusterNode locNode0 = localNode();
return locNode0 != null ? locNode0.isDaemon() :
(config().isDaemon() || IgniteSystemProperties.getBoolean(IGNITE_DAEMON));
}
/** {@inheritDoc} */
@Override public String userVersion(ClassLoader ldr) {
return spring != null ? spring.userVersion(ldr, log(spring.getClass())) : U.DFLT_USER_VERSION;
}
/** {@inheritDoc} */
@Override public PluginProvider pluginProvider(String name) throws PluginNotFoundException {
PluginProvider plugin = pluginProc.pluginProvider(name);
if (plugin == null)
throw new PluginNotFoundException(name);
return plugin;
}
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
@Nullable @Override public <T> T createComponent(Class<T> cls) {
T res = pluginProc.createComponent(cls);
if (res != null)
return res;
if (cls.equals(IgniteCacheObjectProcessor.class))
return (T)new CacheObjectBinaryProcessorImpl(this);
if (cls.equals(CacheConflictResolutionManager.class))
return null;
throw new IgniteException("Unsupported component type: " + cls);
}
/**
* @return Plugin manager.
*/
@Override public IgnitePluginProcessor plugins() {
return pluginProc;
}
/** {@inheritDoc} */
@Override public void writeExternal(ObjectOutput out) throws IOException {
U.writeString(out, grid.name());
}
/** {@inheritDoc} */
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
U.readString(in); // Read for compatibility only. See #readResolve().
}
/**
* Reconstructs object on unmarshalling.
*
* @return Reconstructed object.
* @throws ObjectStreamException Thrown in case of unmarshalling error.
*/
protected Object readResolve() throws ObjectStreamException {
try {
return IgnitionEx.localIgnite().context();
}
catch (IllegalStateException e) {
throw U.withCause(new InvalidObjectException(e.getMessage()), e);
}
finally {
stash.remove();
}
}
/** {@inheritDoc} */
@Override public ExecutorService getExecutorService() {
return execSvc;
}
/** {@inheritDoc} */
@Override public ExecutorService getServiceExecutorService() {
return svcExecSvc;
}
/** {@inheritDoc} */
@Override public ExecutorService getSystemExecutorService() {
return sysExecSvc;
}
/** {@inheritDoc} */
@Override public StripedExecutor getStripedExecutorService() {
return stripedExecSvc;
}
/** {@inheritDoc} */
@Override public ExecutorService getManagementExecutorService() {
return mgmtExecSvc;
}
/** {@inheritDoc} */
@Override public ExecutorService getPeerClassLoadingExecutorService() {
return p2pExecSvc;
}
/** {@inheritDoc} */
@Override public ExecutorService getIgfsExecutorService() {
return igfsExecSvc;
}
/** {@inheritDoc} */
@Override public StripedExecutor getDataStreamerExecutorService() {
return dataStreamExecSvc;
}
/** {@inheritDoc} */
@Override public ExecutorService getRestExecutorService() {
return restExecSvc;
}
/** {@inheritDoc} */
@Override public ExecutorService getAffinityExecutorService() {
return affExecSvc;
}
/** {@inheritDoc} */
@Override @Nullable public ExecutorService getIndexingExecutorService() {
return idxExecSvc;
}
/** {@inheritDoc} */
@Override public ExecutorService getQueryExecutorService() {
return qryExecSvc;
}
/** {@inheritDoc} */
@Override public ExecutorService getSchemaExecutorService() {
return schemaExecSvc;
}
/** {@inheritDoc} */
@Override public Map<String, ? extends ExecutorService> customExecutors() {
return customExecSvcs;
}
/** {@inheritDoc} */
@Override public IgniteExceptionRegistry exceptionRegistry() {
return IgniteExceptionRegistry.get();
}
/** {@inheritDoc} */
@Override public Object nodeAttribute(String key) {
return attrs.get(key);
}
/** {@inheritDoc} */
@Override public boolean hasNodeAttribute(String key) {
return attrs.containsKey(key);
}
/** {@inheritDoc} */
@Override public Object addNodeAttribute(String key, Object val) {
return attrs.put(key, val);
}
/** {@inheritDoc} */
@Override public Map<String, Object> nodeAttributes() {
return attrs;
}
/** {@inheritDoc} */
@Override public ClusterProcessor cluster() {
return cluster;
}
/** {@inheritDoc} */
@Override public MarshallerContextImpl marshallerContext() {
return marshCtx;
}
/** {@inheritDoc} */
@Override public boolean clientNode() {
return cfg.isClientMode() || cfg.isDaemon();
}
/** {@inheritDoc} */
@Override public boolean clientDisconnected() {
ClusterNode locNode0 = localNode();
return locNode0 != null ? (locNode0.isClient() && disconnected) : false;
}
/** {@inheritDoc} */
@Override public PlatformProcessor platform() {
return platformProc;
}
/** {@inheritDoc} */
@Override public GridInternalSubscriptionProcessor internalSubscriptionProcessor() {
return internalSubscriptionProc;
}
/**
* @param disconnected Disconnected flag.
*/
void disconnected(boolean disconnected) {
this.disconnected = disconnected;
}
/** {@inheritDoc} */
@Override public PdsFoldersResolver pdsFolderResolver() {
return pdsFolderRslvr;
}
/** {@inheritDoc} */
@Override public boolean invalid() {
FailureProcessor failureProc = failure();
return failureProc != null
&& failureProc.failureContext() != null
&& failureProc.failureContext().type() != FailureType.SEGMENTATION;
}
/** {@inheritDoc} */
@Override public boolean segmented() {
FailureProcessor failureProc = failure();
return failureProc != null
&& failureProc.failureContext() != null
&& failureProc.failureContext().type() == FailureType.SEGMENTATION;
}
/** {@inheritDoc} */
@Override public FailureProcessor failure() {
return failureProc;
}
/** {@inheritDoc} */
public Thread.UncaughtExceptionHandler uncaughtExceptionHandler() {
return hnd;
}
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(GridKernalContextImpl.class, this);
}
}