1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.infra.instance;
19
20 import lombok.Getter;
21 import lombok.RequiredArgsConstructor;
22 import lombok.Setter;
23 import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
24 import org.apache.shardingsphere.infra.state.instance.InstanceState;
25 import org.apache.shardingsphere.infra.state.instance.InstanceStateContext;
26
27 import com.google.errorprone.annotations.ThreadSafe;
28 import java.util.Collection;
29 import java.util.concurrent.CopyOnWriteArrayList;
30
31
32
33
34 @RequiredArgsConstructor
35 @Getter
36 @ThreadSafe
37 public final class ComputeNodeInstance {
38
39 private final InstanceMetaData metaData;
40
41 private final InstanceStateContext state = new InstanceStateContext();
42
43 private final Collection<String> labels = new CopyOnWriteArrayList<>();
44
45 @Setter
46 private volatile int workerId = -1;
47
48 public ComputeNodeInstance(final InstanceMetaData metaData, final Collection<String> labels) {
49 this.metaData = metaData;
50 this.labels.addAll(labels);
51 }
52
53
54
55
56
57
58 public void switchState(final InstanceState state) {
59 if (InstanceState.CIRCUIT_BREAK == state) {
60 this.state.switchState(state);
61 } else {
62 this.state.recoverState(InstanceState.CIRCUIT_BREAK);
63 }
64 }
65 }