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