Skip to content

Commit

Permalink
Merge branch 'master' into log
Browse files Browse the repository at this point in the history
  • Loading branch information
wenyh1 authored Dec 18, 2023
2 parents 4c048ac + c1f4b6a commit 86a5e65
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,8 @@ private boolean checkState() {
if (getBindingCount() != 0) {
state = STATE_DELETING;
IOProcessor.BACKENDS_OLD_GROUP.add(this);
long time = System.nanoTime();
allSourceMap.values().forEach(f -> f.setAsyncExecStopTime(time));
return false;
}
state = STATE_ABANDONED;
Expand Down Expand Up @@ -283,7 +285,7 @@ public void stopOfFresh(List<String> sourceNames, String reason, boolean closeFr
public boolean stopOfBackground(String reason) {
if (state.intValue() == STATE_DELETING && getBindingCount() == 0) {
for (PhysicalDbInstance dbInstance : allSourceMap.values()) {
dbInstance.stopDirectly(reason, false, false);
dbInstance.stopOfBackground(reason);
}
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ public abstract class PhysicalDbInstance implements ReadTimeStatusInstance {
private volatile boolean needSkipEvit = false;
private volatile boolean needSkipHeartTest = false;
private volatile int logCount;
private volatile long lastExecTime; // stop、start
private volatile long asyncExecStopTime;


public PhysicalDbInstance(DbInstanceConfig config, DbGroupConfig dbGroupConfig, boolean isReadNode) {
Expand Down Expand Up @@ -431,6 +433,7 @@ public void start() {
}

void start(String reason, boolean isStartHeartbeat, boolean delayDetectionStart) {
lastExecTime = System.nanoTime();
startPool(reason);
if (isStartHeartbeat) {
startHeartbeat();
Expand All @@ -454,6 +457,7 @@ private boolean checkState() {
if (dbGroup.getBindingCount() != 0) {
dbGroup.setState(PhysicalDbGroup.STATE_DELETING);
IOProcessor.BACKENDS_OLD_INSTANCE.add(this);
setAsyncExecStopTime(System.nanoTime());
return false;
}
if (dbGroup.isStop()) {
Expand All @@ -462,13 +466,18 @@ private boolean checkState() {
if (dbGroup.getBindingCount() != 0) {
dbGroup.setState(PhysicalDbGroup.STATE_DELETING);
IOProcessor.BACKENDS_OLD_INSTANCE.add(this);
setAsyncExecStopTime(System.nanoTime());
return false;
}
return true;
}

public boolean stopOfBackground(String reason) {
if (dbGroup.getState() == PhysicalDbGroup.STATE_DELETING && dbGroup.getBindingCount() == 0) {
if (asyncExecStopTime <= lastExecTime) { // In extreme cases (equal cases), in extreme cases there may be problems,
LOGGER.info("discard expired stop() operations");
return true;
}
stopDirectly(reason, false, false);
return true;
}
Expand Down Expand Up @@ -496,6 +505,7 @@ public void stop(String reason, boolean closeFront) {
}

protected void stop(String reason, boolean closeFront, boolean isStopHeartbeat, boolean isStopPool, boolean delayDetectionStop) {
lastExecTime = System.nanoTime();
if (isStopHeartbeat) {
stopHeartbeat(reason);
}
Expand Down Expand Up @@ -576,6 +586,22 @@ public boolean enable() {
return false;
}

public long getLastExecTime() {
return lastExecTime;
}

public void setLastExecTime(long lastExecTime) {
this.lastExecTime = lastExecTime;
}

public long getAsyncExecStopTime() {
return asyncExecStopTime;
}

public void setAsyncExecStopTime(long asyncExecStopTime) {
this.asyncExecStopTime = asyncExecStopTime;
}

public final int getActiveConnections() {
return connectionPool.getCount(PooledConnection.STATE_IN_USE);
}
Expand Down

0 comments on commit 86a5e65

Please sign in to comment.