All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.hekate.cluster.ClusterAcceptor Maven / Gradle / Ivy

There is a newer version: 4.1.3
Show newest version
/*
 * Copyright 2020 The Hekate Project
 *
 * The Hekate Project 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 io.hekate.cluster;

import io.hekate.core.Hekate;
import java.util.List;

/**
 * Cluster join acceptor.
 *
 * 

* Implementations of this interface can provide a custom logic of accepting/rejecting new nodes when they are trying to join the * cluster. *

* *

* When a new node tries to join the cluster it sends a join request to an existing cluster node. When the node receives such a request it * asks all of its registered acceptors to check for the validity of the joining node by calling the {@link * #acceptJoin(ClusterNode, Hekate)} method. If any acceptor returns a non-null reject reason then the joining node will be rejected and * the {@link ClusterJoinRejectedException} will be thrown on its side. Information about the reject reason can be obtained via the {@link * ClusterJoinRejectedException#rejectReason()} method. *

* *

* Instances of this interface can be registered via the {@link ClusterServiceFactory#setAcceptors(List)} method. Note that the same * implementation of this interface must be registered on all of the cluster nodes, since any of them can be selected by the joining node * as a join target. *

* * @see ClusterServiceFactory#setAcceptors(List) */ public interface ClusterAcceptor { /** * Called when a new node tries to join the cluster. Returns {@code null} if new node should be accepted or an arbitrary string * indicating the reject reason. * * @param joining New node that is trying to join the cluster. * @param local {@link Hekate} instance that this acceptor belongs to. * * @return Reject reason if node should be rejected or {@code null} if node should be accepted. */ String acceptJoin(ClusterNode joining, Hekate local); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy