/* * Copyright (c) 2014, PostgreSQL Global Development Group * See the LICENSE file in the project root for more information. */ package com.amazon.redshift.hostchooser; /** * Describes the required server type. */ public enum HostRequirement { any { public boolean allowConnectingTo(HostStatus status) { return status != HostStatus.ConnectFail; } }, /** * @deprecated we no longer use the terms master or slave in the driver, or the Redshift * project. */ @Deprecated master { public boolean allowConnectingTo(HostStatus status) { return primary.allowConnectingTo(status); } }, primary { public boolean allowConnectingTo(HostStatus status) { return status == HostStatus.Primary || status == HostStatus.ConnectOK; } }, secondary { public boolean allowConnectingTo(HostStatus status) { return status == HostStatus.Secondary || status == HostStatus.ConnectOK; } }, preferSecondary { public boolean allowConnectingTo(HostStatus status) { return status != HostStatus.ConnectFail; } }; public abstract boolean allowConnectingTo(HostStatus status); /** *
The Redshift project has decided not to use the term slave to refer to alternate servers. * secondary or standby is preferred. We have arbitrarily chosen secondary. * As of Jan 2018 in order not to break existing code we are going to accept both slave or * secondary for names of alternate servers.
* *The current policy is to keep accepting this silently but not document slave, or slave preferSlave
* *As of Jul 2018 silently deprecate the use of the word master as well
* * @param targetServerType the value of {@code targetServerType} connection property * @return HostRequirement */ public static HostRequirement getTargetServerType(String targetServerType) { String allowSlave = targetServerType.replace("lave", "econdary").replace("master", "primary"); return valueOf(allowSlave); } }