Class ClientClusterImpl

    • Field Detail

      • ch

        protected final org.apache.ignite.internal.client.thin.ReliableChannel ch
        Channel.
      • utils

        protected final ClientUtils utils
        Marshaller utils.
    • Method Detail

      • state

        public void state​(ClusterState newState)
                   throws ClientException
        Changes current cluster state to given newState cluster state.

        NOTE: Deactivation clears in-memory caches (without persistence) including the system caches.

        Specified by:
        state in interface ClientCluster
        Parameters:
        newState - New cluster state.
        Throws:
        ClientException - If change state operation failed.
      • state

        public void state​(ClusterState newState,
                          boolean forceDeactivation)
                   throws ClientException
        Changes current cluster state to given newState cluster state.

        NOTE: Deactivation clears in-memory caches (without persistence) including the system caches.

        Parameters:
        newState - New cluster state.
        forceDeactivation - If true, cluster deactivation will be forced.
        Throws:
        ClientException - If change state operation failed.
      • disableWal

        public boolean disableWal​(String cacheName)
                           throws ClientException
        Disables write-ahead logging for specified cache. When WAL is disabled, changes are not logged to disk. This significantly improves cache update speed. The drawback is absence of local crash-recovery guarantees. If node is crashed, local content of WAL-disabled cache will be cleared on restart to avoid data corruption.

        Internally this method will wait for all current cache operations to finish and prevent new cache operations from being executed. Then checkpoint is initiated to flush all data to disk. Control is returned to the callee when all dirty pages are prepared for checkpoint, but not necessarily flushed to disk.

        WAL state can be changed only for persistent caches.

        Specified by:
        disableWal in interface ClientCluster
        Parameters:
        cacheName - Cache name.
        Returns:
        Whether WAL disabled by this call.
        Throws:
        ClientException - If error occurs.
        See Also:
        ClientCluster.enableWal(String), ClientCluster.isWalEnabled(String)
      • enableWal

        public boolean enableWal​(String cacheName)
                          throws ClientException
        Enables write-ahead logging for specified cache. Restoring crash-recovery guarantees of a previous call to ClientCluster.disableWal(String).

        Internally this method will wait for all current cache operations to finish and prevent new cache operations from being executed. Then checkpoint is initiated to flush all data to disk. Control is returned to the callee when all data is persisted to disk.

        WAL state can be changed only for persistent caches.

        Specified by:
        enableWal in interface ClientCluster
        Parameters:
        cacheName - Cache name.
        Returns:
        Whether WAL enabled by this call.
        Throws:
        ClientException - If error occurs.
        See Also:
        ClientCluster.disableWal(String), ClientCluster.isWalEnabled(String)
      • forNodes

        public ClientClusterGroup forNodes​(Collection<? extends ClusterNode> nodes)
        Creates a cluster group over a given set of nodes.
        Specified by:
        forNodes in interface ClientClusterGroup
        Parameters:
        nodes - Collection of nodes to create the cluster group from.
        Returns:
        Cluster group for the provided grid nodes.
      • forNode

        public ClientClusterGroup forNode​(ClusterNode node,
                                          ClusterNode... nodes)
        Creates a cluster group for the given node.
        Specified by:
        forNode in interface ClientClusterGroup
        Parameters:
        node - Node to create cluster group for.
        nodes - Optional additional nodes to include into the cluster group.
        Returns:
        Cluster group for the given nodes.
      • forOthers

        public ClientClusterGroup forOthers​(ClusterNode node,
                                            ClusterNode... nodes)
        Creates a cluster group for nodes other than the given nodes.
        Specified by:
        forOthers in interface ClientClusterGroup
        Parameters:
        node - Node to exclude from the new cluster group.
        nodes - Optional additional nodes to exclude from the cluster group.
        Returns:
        Cluster group that will contain all nodes from the original cluster group excluding the given nodes.
      • forOthers

        public ClientClusterGroup forOthers​(ClientClusterGroup prj)
        Creates a cluster group for nodes not included into the given cluster group.
        Specified by:
        forOthers in interface ClientClusterGroup
        Parameters:
        prj - Cluster group to exclude from the new cluster group.
        Returns:
        Cluster group for nodes not included into the given cluster group.
      • forNodeIds

        public ClientClusterGroup forNodeIds​(Collection<UUID> ids)
        Creates a cluster group over nodes with specified node IDs.
        Specified by:
        forNodeIds in interface ClientClusterGroup
        Parameters:
        ids - Collection of node IDs.
        Returns:
        Cluster group over nodes with the specified node IDs.
      • forNodeId

        public ClientClusterGroup forNodeId​(UUID id,
                                            UUID... ids)
        Creates a cluster group for a node with the specified ID.
        Specified by:
        forNodeId in interface ClientClusterGroup
        Parameters:
        id - Node ID to get the cluster group for.
        ids - Optional additional node IDs to include into the cluster group.
        Returns:
        Cluster group over the node with the specified node IDs.
      • forPredicate

        public ClientClusterGroup forPredicate​(Predicate<ClusterNode> p)
        Creates a new cluster group which includes all nodes that pass the given predicate filter.
        Specified by:
        forPredicate in interface ClientClusterGroup
        Parameters:
        p - Predicate filter for nodes to include into the cluster group.
        Returns:
        Cluster group for nodes that passed the predicate filter.
      • forAttribute

        public ClientClusterGroup forAttribute​(String name,
                                               @Nullable
                                               @Nullable Object val)
        Creates a new cluster group for nodes containing given name and value specified in user attributes.

        User attributes for every node are optional and can be specified in grid node configuration. See IgniteConfiguration.getUserAttributes() for more information.

        Specified by:
        forAttribute in interface ClientClusterGroup
        Parameters:
        name - Name of the attribute.
        val - Optional attribute value to match (if null, just check if attribute exists).
        Returns:
        Cluster group for nodes containing specified attribute.
      • forRandom

        public ClientClusterGroup forRandom()
        Creates a cluster group with one random node from the current cluster group.
        Specified by:
        forRandom in interface ClientClusterGroup
        Returns:
        Cluster group containing one random node from the current cluster group.
      • forOldest

        public ClientClusterGroup forOldest()
        Creates a cluster group with one oldest node from the current cluster group. The resulting cluster group is dynamic and will always pick the next oldest node if the previous one leaves topology even after the cluster group has been created.

        Use ClientClusterGroup.node() method to get the oldest node.

        Specified by:
        forOldest in interface ClientClusterGroup
        Returns:
        Cluster group containing one oldest node from the current cluster group.
      • forYoungest

        public ClientClusterGroup forYoungest()
        Creates a cluster group with one youngest node in the current cluster group. The resulting cluster group is dynamic and will always pick the newest node in the topology, even if more nodes entered after the cluster group has been created.
        Specified by:
        forYoungest in interface ClientClusterGroup
        Returns:
        Cluster group containing one youngest node from the current cluster group.
      • forHost

        public ClientClusterGroup forHost​(ClusterNode node)
        Gets cluster group consisting from the nodes in this cluster group residing on the same host (with the same MAC address) as the given node.
        Specified by:
        forHost in interface ClientClusterGroup
        Parameters:
        node - Node to select the host for.
        Returns:
        Cluster group for nodes residing on the same host as the specified node.
      • forHost

        public ClientClusterGroup forHost​(String host,
                                          String... hosts)
        Gets cluster group consisting from the nodes running on the hosts specified.
        Specified by:
        forHost in interface ClientClusterGroup
        Parameters:
        host - Host name to get nodes to put in cluster
        hosts - Host names to get nodes to put in cluster.
        Returns:
        Cluster group for nodes residing on the hosts specified.
      • node

        public ClusterNode node​(UUID nid)
        Gets a node for given ID from this cluster group.
        Specified by:
        node in interface ClientClusterGroup
        Parameters:
        nid - Node ID.
        Returns:
        Node with given ID from this cluster group or null, if such node does not exist.
      • node

        public ClusterNode node()
        Gets first node from the list of nodes in this cluster group. This method is specifically useful for cluster groups with one node only.
        Specified by:
        node in interface ClientClusterGroup
        Returns:
        First node from the list of nodes in this cluster group or null if the cluster group is empty.
      • nodeIds

        public Collection<UUID> nodeIds()
        Gets node id's. Note: This method is for internal use only. For optimization purposes it can return not existing node IDs if only filter by node IDs was explicitly set. Method also returns null for default projection (for server nodes).