public class BlueGreenStatusProvider
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
static class |
BlueGreenStatusProvider.PhaseTimeInfo |
| Constructor and Description |
|---|
BlueGreenStatusProvider(@NonNull FullServicesContainer servicesContainer,
@NonNull java.util.Properties props,
@NonNull java.lang.String bgdId) |
| Modifier and Type | Method and Description |
|---|---|
protected java.util.List<ConnectRouting> |
addSubstituteBlueWithIpAddressConnectRouting() |
protected void |
createPostRouting(java.util.List<ConnectRouting> connectRouting) |
protected int |
getContextHash() |
protected java.lang.String |
getHostAndPort(java.lang.String host,
int port) |
protected int |
getInterimStatusHash(BlueGreenInterimStatus interimStatus) |
protected java.util.Properties |
getMonitoringProperties() |
protected long |
getNanoTime()
For testing purposes.
|
protected @Nullable java.util.List<HostSpec> |
getReaderHosts(BlueGreenRole role) |
protected BlueGreenStatus |
getStatusOfCompleted() |
protected BlueGreenStatus |
getStatusOfCreated() |
protected BlueGreenStatus |
getStatusOfInProgress()
New connect requests to blue: suspend or route to corresponding IP address (depending on settings).
|
protected BlueGreenStatus |
getStatusOfPost() |
protected BlueGreenStatus |
getStatusOfPreparation()
New connect requests to blue: route to corresponding IP address.
|
protected int |
getValueHash(int currentHash,
java.lang.String val) |
protected @Nullable HostSpec |
getWriterHost(BlueGreenRole role) |
protected void |
initMonitoring() |
protected boolean |
isAlreadySuccessfullyConnected(java.lang.String connectHost,
java.lang.String iamHost) |
protected boolean |
isSwitchoverTimerExpired() |
protected void |
logCurrentContext() |
protected void |
logSwitchoverFinalSummary() |
protected void |
prepareStatus(@NonNull BlueGreenRole role,
@NonNull BlueGreenInterimStatus interimStatus) |
protected void |
registerIamHost(java.lang.String connectHost,
java.lang.String iamHost) |
protected void |
resetContextWhenCompleted() |
protected void |
startSwitchoverTimer() |
protected void |
storeBlueDnsUpdateTime() |
protected void |
storeGreenDnsRemoveTime() |
protected void |
storeGreenNodeChangeNameTime() |
protected void |
storeGreenTopologyChangeTime() |
protected void |
storePhaseTime(BlueGreenPhase phase) |
protected void |
updateCorrespondingNodes()
Update corresponding nodes
Blue writer node is mapped to a green writer node.
|
protected void |
updateDnsFlags(BlueGreenRole role,
BlueGreenInterimStatus interimStatus) |
protected void |
updateMonitors() |
protected void |
updatePhase(BlueGreenRole role,
BlueGreenInterimStatus interimStatus) |
protected void |
updateStatusCache() |
protected void |
updateSummaryStatus(BlueGreenRole role,
BlueGreenInterimStatus interimStatus) |
public static final AwsWrapperProperty BG_INTERVAL_BASELINE_MS
public static final AwsWrapperProperty BG_INTERVAL_INCREASED_MS
public static final AwsWrapperProperty BG_INTERVAL_HIGH_MS
public static final AwsWrapperProperty BG_SWITCHOVER_TIMEOUT_MS
public static final AwsWrapperProperty BG_SUSPEND_NEW_BLUE_CONNECTIONS
protected final HostSpecBuilder hostSpecBuilder
protected final BlueGreenStatusMonitor[] monitors
protected int[] interimStatusHashes
protected int lastContextHash
protected BlueGreenInterimStatus[] interimStatuses
protected final java.util.Map<java.lang.String,java.util.Optional<java.lang.String>> hostIpAddresses
protected final java.util.Map<java.lang.String,Pair<HostSpec,HostSpec>> correspondingNodes
protected final java.util.Map<java.lang.String,BlueGreenRole> roleByHost
protected final java.util.Map<java.lang.String,java.util.Set<java.lang.String>> iamHostSuccessfulConnects
protected final java.util.Map<java.lang.String,java.time.Instant> greenNodeChangeNameTimes
protected BlueGreenStatus summaryStatus
protected BlueGreenPhase latestStatusPhase
protected boolean rollback
protected boolean blueDnsUpdateCompleted
protected boolean greenDnsRemoved
protected boolean greenTopologyChanged
protected final java.util.concurrent.atomic.AtomicBoolean allGreenNodesChangedName
protected long postStatusEndTimeNano
protected final java.util.concurrent.locks.ReentrantLock processStatusLock
protected final java.util.Map<BlueGreenIntervalRate,java.lang.Long> statusCheckIntervalMap
protected final long switchoverTimeoutNano
protected final boolean suspendNewBlueConnectionsWhenInProgress
protected final FullServicesContainer servicesContainer
protected final StorageService storageService
protected final PluginService pluginService
protected final java.util.Properties props
protected final java.lang.String bgdId
protected java.util.Map<java.lang.String,BlueGreenStatusProvider.PhaseTimeInfo> phaseTimeNano
protected final RdsUtils rdsUtils
public BlueGreenStatusProvider(@NonNull FullServicesContainer servicesContainer, @NonNull java.util.Properties props, @NonNull java.lang.String bgdId)
protected void initMonitoring()
protected java.util.Properties getMonitoringProperties()
protected void prepareStatus(@NonNull BlueGreenRole role, @NonNull BlueGreenInterimStatus interimStatus)
protected void updatePhase(BlueGreenRole role, BlueGreenInterimStatus interimStatus)
protected void updateStatusCache()
protected void updateCorrespondingNodes()
protected @Nullable HostSpec getWriterHost(BlueGreenRole role)
protected @Nullable java.util.List<HostSpec> getReaderHosts(BlueGreenRole role)
protected void updateSummaryStatus(BlueGreenRole role, BlueGreenInterimStatus interimStatus)
protected void updateMonitors()
protected void updateDnsFlags(BlueGreenRole role, BlueGreenInterimStatus interimStatus)
protected int getInterimStatusHash(BlueGreenInterimStatus interimStatus)
protected int getContextHash()
protected int getValueHash(int currentHash,
java.lang.String val)
protected java.lang.String getHostAndPort(java.lang.String host,
int port)
protected BlueGreenStatus getStatusOfCreated()
protected BlueGreenStatus getStatusOfPreparation()
protected java.util.List<ConnectRouting> addSubstituteBlueWithIpAddressConnectRouting()
protected BlueGreenStatus getStatusOfInProgress()
protected BlueGreenStatus getStatusOfPost()
protected void createPostRouting(java.util.List<ConnectRouting> connectRouting)
protected BlueGreenStatus getStatusOfCompleted()
protected void registerIamHost(java.lang.String connectHost,
java.lang.String iamHost)
protected boolean isAlreadySuccessfullyConnected(java.lang.String connectHost,
java.lang.String iamHost)
protected long getNanoTime()
protected void storePhaseTime(BlueGreenPhase phase)
protected void storeBlueDnsUpdateTime()
protected void storeGreenDnsRemoveTime()
protected void storeGreenNodeChangeNameTime()
protected void storeGreenTopologyChangeTime()
protected void logSwitchoverFinalSummary()
protected void resetContextWhenCompleted()
protected void startSwitchoverTimer()
protected boolean isSwitchoverTimerExpired()
protected void logCurrentContext()