Fix readiness status for local EDQS

This commit is contained in:
ViacheslavKlimov 2025-05-12 11:28:16 +03:00
parent b97c1888f1
commit 14f24d2497
2 changed files with 10 additions and 4 deletions

View File

@ -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

View File

@ -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 {