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

com.hazelcast.wan.WanMigrationAwarePublisher Maven / Gradle / Ivy

There is a newer version: 5.4.0
Show newest version
/*
 * Copyright (c) 2008-2020, Hazelcast, Inc. All Rights Reserved.
 *
 * Licensed 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 com.hazelcast.wan;

import com.hazelcast.internal.partition.PartitionMigrationEvent;
import com.hazelcast.internal.partition.PartitionReplicationEvent;
import com.hazelcast.internal.services.ServiceNamespace;

import java.util.Collection;
import java.util.Set;

/**
 * Interface for WAN publisher migration related events. Can be implemented
 * by WAN publishers to listen to migration events, for example to maintain
 * the WAN event counters.
 * 

* None of the methods of this interface is expected to block or fail. * * @param WAN event container type (used for replication and migration inside the * cluster) * @see PartitionMigrationEvent * @see com.hazelcast.internal.partition.MigrationAwareService */ public interface WanMigrationAwarePublisher { /** * Indicates that migration started for a given partition * * @param event the migration event */ void onMigrationStart(PartitionMigrationEvent event); /** * Indicates that migration is committing for a given partition * * @param event the migration event */ void onMigrationCommit(PartitionMigrationEvent event); /** * Indicates that migration is rolling back for a given partition * * @param event the migration event */ void onMigrationRollback(PartitionMigrationEvent event); /** * Returns a container containing the WAN events for the given replication * {@code event} and {@code namespaces} to be replicated. The replication * here refers to the intra-cluster replication between members in a single * cluster and does not refer to WAN replication, e.g. between two clusters. * Invoked when migrating WAN replication data between members in a cluster. * * @param event the replication event * @param namespaces namespaces which will be replicated * @return the WAN event container * @see #processEventContainerReplicationData(int, Object) */ default T prepareEventContainerReplicationData(PartitionReplicationEvent event, Collection namespaces) { return null; } /** * Processes the WAN event container received through intra-cluster replication * or migration. This method may completely remove existing WAN events for * the given {@code partitionId} or it may append the given * {@code eventContainer} to the existing events. * Invoked when migrating WAN replication data between members in a cluster. * * @param partitionId partition ID which is being replicated or migrated * @param eventContainer the WAN event container * @see #prepareEventContainerReplicationData(PartitionReplicationEvent, Collection) */ default void processEventContainerReplicationData(int partitionId, T eventContainer) { } /** * Collect the namespaces of all WAN event containers that should be replicated * by the replication event. * Invoked when migrating WAN replication data between members in a cluster. * * @param event the replication event * @param namespaces the set in which namespaces should be added */ default void collectAllServiceNamespaces(PartitionReplicationEvent event, Set namespaces) { } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy