*/
package org.sonar.ce;
+import com.hazelcast.spi.exception.RetryableHazelcastException;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.locks.Lock;
+import org.apache.logging.log4j.Logger;
+import org.elasticsearch.common.logging.Loggers;
import org.picocontainer.Startable;
import org.sonar.ce.taskprocessor.CeWorkerFactory;
import org.sonar.process.cluster.hz.HazelcastMember;
* Provide the set of worker's UUID in a clustered SonarQube instance
*/
public class CeDistributedInformationImpl implements CeDistributedInformation, Startable {
+ private static final Logger LOGGER = Loggers.getLogger(CeDistributedInformationImpl.class);
+
private final HazelcastMember hazelcastMember;
private final CeWorkerFactory ceCeWorkerFactory;
@Override
public void stop() {
- // Removing the worker UUIDs
- getClusteredWorkerUUIDs().remove(hazelcastMember.getUuid());
+ try {
+ // Removing the worker UUIDs
+ getClusteredWorkerUUIDs().remove(hazelcastMember.getUuid());
+ } catch (RetryableHazelcastException e) {
+ LOGGER.debug("Unable to remove worker UUID from the list of active workers", e.getMessage());
+ }
}
private Map<String, Set<String>> getClusteredWorkerUUIDs() {
package org.sonar.process.cluster.health;
import com.hazelcast.core.HazelcastInstanceNotActiveException;
+import com.hazelcast.spi.exception.RetryableHazelcastException;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
try {
NodeHealth nodeHealth = nodeHealthProvider.get();
sharedHealthState.writeMine(nodeHealth);
- } catch (HazelcastInstanceNotActiveException e) {
+ } catch (HazelcastInstanceNotActiveException | RetryableHazelcastException e) {
LOG.debug("Hazelcast is no more active", e);
} catch (Throwable t) {
LOG.error("An error occurred while attempting to refresh HealthState of the current node in the shared state:", t);