Fix readiness status for local EDQS
This commit is contained in:
parent
b97c1888f1
commit
14f24d2497
@ -29,6 +29,7 @@ import org.thingsboard.server.edqs.util.EdqsRocksDb;
|
||||
import org.thingsboard.server.gen.transport.TransportProtos.ToEdqsMsg;
|
||||
import org.thingsboard.server.queue.common.TbProtoQueueMsg;
|
||||
import org.thingsboard.server.queue.common.consumer.PartitionedQueueConsumerManager;
|
||||
import org.thingsboard.server.queue.discovery.DiscoveryService;
|
||||
import org.thingsboard.server.queue.edqs.InMemoryEdqsComponent;
|
||||
|
||||
import java.util.List;
|
||||
@ -43,12 +44,14 @@ import static org.thingsboard.server.common.msg.queue.TopicPartitionInfo.withTop
|
||||
public class LocalEdqsStateService implements EdqsStateService {
|
||||
|
||||
private final EdqsRocksDb db;
|
||||
private final DiscoveryService discoveryService;
|
||||
@Autowired @Lazy
|
||||
private EdqsProcessor processor;
|
||||
|
||||
private PartitionedQueueConsumerManager<TbProtoQueueMsg<ToEdqsMsg>> eventConsumer;
|
||||
private List<PartitionedQueueConsumerManager<?>> otherConsumers;
|
||||
private Set<TopicPartitionInfo> partitions;
|
||||
|
||||
private boolean ready = false;
|
||||
|
||||
@Override
|
||||
public void init(PartitionedQueueConsumerManager<TbProtoQueueMsg<ToEdqsMsg>> eventConsumer, List<PartitionedQueueConsumerManager<?>> otherConsumers) {
|
||||
@ -58,7 +61,7 @@ public class LocalEdqsStateService implements EdqsStateService {
|
||||
|
||||
@Override
|
||||
public void process(Set<TopicPartitionInfo> partitions) {
|
||||
if (this.partitions == null) {
|
||||
if (!ready) {
|
||||
db.forEach((key, value) -> {
|
||||
try {
|
||||
ToEdqsMsg edqsMsg = ToEdqsMsg.parseFrom(value);
|
||||
@ -70,11 +73,13 @@ public class LocalEdqsStateService implements EdqsStateService {
|
||||
});
|
||||
log.info("Restore completed");
|
||||
}
|
||||
ready = true;
|
||||
discoveryService.setReady(true);
|
||||
|
||||
eventConsumer.update(withTopic(partitions, eventConsumer.getTopic()));
|
||||
for (PartitionedQueueConsumerManager<?> consumer : otherConsumers) {
|
||||
consumer.update(withTopic(partitions, consumer.getTopic()));
|
||||
}
|
||||
this.partitions = partitions;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -93,7 +98,7 @@ public class LocalEdqsStateService implements EdqsStateService {
|
||||
|
||||
@Override
|
||||
public boolean isReady() {
|
||||
return partitions != null;
|
||||
return ready;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -179,6 +179,7 @@ public class ZkDiscoveryService implements DiscoveryService, PathChildrenCacheLi
|
||||
|
||||
@Override
|
||||
public void setReady(boolean ready) {
|
||||
log.debug("Marking current service as {}", ready ? "ready" : "NOT ready");
|
||||
boolean changed = serviceInfoProvider.setReady(ready);
|
||||
if (changed) {
|
||||
try {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user