Skip to content

Commit

Permalink
feat: make StateMachine implements LifeCircle
Browse files Browse the repository at this point in the history
  • Loading branch information
areyouok committed Jun 18, 2024
1 parent 5f22757 commit 244fcba
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.github.dtprj.dongting.codec.Decoder;
import com.github.dtprj.dongting.codec.Encodable;
import com.github.dtprj.dongting.codec.StrEncoder;
import com.github.dtprj.dongting.common.AbstractLifeCircle;
import com.github.dtprj.dongting.common.DtTime;
import com.github.dtprj.dongting.fiber.FiberFuture;
import com.github.dtprj.dongting.fiber.FiberGroup;
Expand All @@ -36,7 +37,7 @@
/**
* @author huangli
*/
public class DtKV implements StateMachine {
public class DtKV extends AbstractLifeCircle implements StateMachine {
public static final int BIZ_TYPE_GET = 0;
public static final int BIZ_TYPE_PUT = 1;
public static final int BIZ_TYPE_REMOVE = 2;
Expand Down Expand Up @@ -172,9 +173,12 @@ private static void ensureRunning(KvStatus kvStatus) {
}
}

@Override
protected void doStart() {
}

@Override
public void close() throws Exception {
protected void doStop(DtTime timeout, boolean force) {
newStatus(KvStatus.CLOSED, null);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package com.github.dtprj.dongting.raft.impl;

import com.github.dtprj.dongting.codec.ByteArrayEncoder;
import com.github.dtprj.dongting.common.DtTime;
import com.github.dtprj.dongting.common.DtUtil;
import com.github.dtprj.dongting.common.PerfCallback;
import com.github.dtprj.dongting.common.Timestamp;
Expand Down Expand Up @@ -147,8 +148,13 @@ public void apply() {
condition.signal();
}

public void close() {
public void shutdown(DtTime timeout) {
condition.signal();
try {
stateMachine.stop(timeout);
} catch (Throwable e) {
log.error("state machine stop failed", e);
}
}

private FrameCallResult exec(RaftTask rt, long index, FrameCall<Void> resumePoint) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -489,7 +489,7 @@ private CompletableFuture<Void> stopGroup(RaftGroupImpl g, DtTime timeout) {
@Override
public FrameCallResult execute(Void input) {
GroupComponents gc = g.getGroupComponents();
gc.getApplyManager().close();
gc.getApplyManager().shutdown(timeout);
return gc.getRaftLog().close().await(this::afterRaftLogClose);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package com.github.dtprj.dongting.raft.sm;

import com.github.dtprj.dongting.common.LifeCircle;
import com.github.dtprj.dongting.fiber.FiberFuture;
import com.github.dtprj.dongting.raft.server.RaftInput;

Expand All @@ -25,7 +26,7 @@
*
* @author huangli
*/
public interface StateMachine extends AutoCloseable, RaftCodecFactory {
public interface StateMachine extends LifeCircle, RaftCodecFactory {

/**
* this method is called in raft thread.
Expand Down

0 comments on commit 244fcba

Please sign in to comment.