|
34 | 34 | import com.alibaba.fluss.metadata.TableInfo; |
35 | 35 | import com.alibaba.fluss.metadata.TablePartition; |
36 | 36 | import com.alibaba.fluss.metadata.TablePath; |
37 | | -import com.alibaba.fluss.metrics.MetricNames; |
38 | 37 | import com.alibaba.fluss.rpc.messages.AdjustIsrResponse; |
39 | 38 | import com.alibaba.fluss.rpc.messages.CommitKvSnapshotResponse; |
40 | 39 | import com.alibaba.fluss.rpc.messages.CommitLakeTableSnapshotResponse; |
|
60 | 59 | import com.alibaba.fluss.server.coordinator.event.NotifyLeaderAndIsrResponseReceivedEvent; |
61 | 60 | import com.alibaba.fluss.server.coordinator.event.watcher.TableChangeWatcher; |
62 | 61 | import com.alibaba.fluss.server.coordinator.event.watcher.TabletServerChangeWatcher; |
63 | | -import com.alibaba.fluss.server.coordinator.statemachine.ReplicaState; |
64 | 62 | import com.alibaba.fluss.server.coordinator.statemachine.ReplicaStateMachine; |
65 | 63 | import com.alibaba.fluss.server.coordinator.statemachine.TableBucketStateMachine; |
66 | 64 | import com.alibaba.fluss.server.entity.AdjustIsrResultForBucket; |
@@ -136,13 +134,6 @@ public class CoordinatorEventProcessor implements EventProcessor { |
136 | 134 |
|
137 | 135 | private final CompletedSnapshotStoreManager completedSnapshotStoreManager; |
138 | 136 |
|
139 | | - // metrics |
140 | | - private volatile int tabletServerCount; |
141 | | - private volatile int offlineBucketCount; |
142 | | - private volatile int tableCount; |
143 | | - private volatile int bucketCount; |
144 | | - private volatile int replicasToDeleteCount; |
145 | | - |
146 | 137 | public CoordinatorEventProcessor( |
147 | 138 | ZooKeeperClient zooKeeperClient, |
148 | 139 | CoordinatorMetadataCache serverMetadataCache, |
@@ -198,18 +189,6 @@ public CoordinatorEventProcessor( |
198 | 189 | this.lakeTableTieringManager = lakeTableTieringManager; |
199 | 190 | this.coordinatorMetricGroup = coordinatorMetricGroup; |
200 | 191 | this.internalListenerName = conf.getString(ConfigOptions.INTERNAL_LISTENER_NAME); |
201 | | - registerMetrics(); |
202 | | - } |
203 | | - |
204 | | - private void registerMetrics() { |
205 | | - coordinatorMetricGroup.gauge(MetricNames.ACTIVE_COORDINATOR_COUNT, () -> 1); |
206 | | - coordinatorMetricGroup.gauge( |
207 | | - MetricNames.ACTIVE_TABLET_SERVER_COUNT, () -> tabletServerCount); |
208 | | - coordinatorMetricGroup.gauge(MetricNames.OFFLINE_BUCKET_COUNT, () -> offlineBucketCount); |
209 | | - coordinatorMetricGroup.gauge(MetricNames.BUCKET_COUNT, () -> bucketCount); |
210 | | - coordinatorMetricGroup.gauge(MetricNames.TABLE_COUNT, () -> tableCount); |
211 | | - coordinatorMetricGroup.gauge( |
212 | | - MetricNames.REPLICAS_TO_DELETE_COUNT, () -> replicasToDeleteCount); |
213 | 192 | } |
214 | 193 |
|
215 | 194 | public CoordinatorEventManager getCoordinatorEventManager() { |
@@ -242,7 +221,6 @@ public void startup() { |
242 | 221 |
|
243 | 222 | // start table manager |
244 | 223 | tableManager.startup(); |
245 | | - updateMetrics(); |
246 | 224 |
|
247 | 225 | // start the event manager which will then process the event |
248 | 226 | coordinatorEventManager.start(); |
@@ -447,92 +425,56 @@ private void onShutdown() { |
447 | 425 |
|
448 | 426 | @Override |
449 | 427 | public void process(CoordinatorEvent event) { |
450 | | - try { |
451 | | - if (event instanceof CreateTableEvent) { |
452 | | - processCreateTable((CreateTableEvent) event); |
453 | | - } else if (event instanceof CreatePartitionEvent) { |
454 | | - processCreatePartition((CreatePartitionEvent) event); |
455 | | - } else if (event instanceof DropTableEvent) { |
456 | | - processDropTable((DropTableEvent) event); |
457 | | - } else if (event instanceof DropPartitionEvent) { |
458 | | - processDropPartition((DropPartitionEvent) event); |
459 | | - } else if (event instanceof NotifyLeaderAndIsrResponseReceivedEvent) { |
460 | | - processNotifyLeaderAndIsrResponseReceivedEvent( |
461 | | - (NotifyLeaderAndIsrResponseReceivedEvent) event); |
462 | | - } else if (event instanceof DeleteReplicaResponseReceivedEvent) { |
463 | | - processDeleteReplicaResponseReceived((DeleteReplicaResponseReceivedEvent) event); |
464 | | - } else if (event instanceof NewTabletServerEvent) { |
465 | | - processNewTabletServer((NewTabletServerEvent) event); |
466 | | - } else if (event instanceof DeadTabletServerEvent) { |
467 | | - processDeadTabletServer((DeadTabletServerEvent) event); |
468 | | - } else if (event instanceof AdjustIsrReceivedEvent) { |
469 | | - AdjustIsrReceivedEvent adjustIsrReceivedEvent = (AdjustIsrReceivedEvent) event; |
470 | | - CompletableFuture<AdjustIsrResponse> callback = |
471 | | - adjustIsrReceivedEvent.getRespCallback(); |
472 | | - completeFromCallable( |
473 | | - callback, |
474 | | - () -> |
475 | | - makeAdjustIsrResponse( |
476 | | - tryProcessAdjustIsr( |
477 | | - adjustIsrReceivedEvent.getLeaderAndIsrMap()))); |
478 | | - } else if (event instanceof CommitKvSnapshotEvent) { |
479 | | - CommitKvSnapshotEvent commitKvSnapshotEvent = (CommitKvSnapshotEvent) event; |
480 | | - CompletableFuture<CommitKvSnapshotResponse> callback = |
481 | | - commitKvSnapshotEvent.getRespCallback(); |
482 | | - completeFromCallable( |
483 | | - callback, () -> tryProcessCommitKvSnapshot(commitKvSnapshotEvent)); |
484 | | - } else if (event instanceof CommitRemoteLogManifestEvent) { |
485 | | - CommitRemoteLogManifestEvent commitRemoteLogManifestEvent = |
486 | | - (CommitRemoteLogManifestEvent) event; |
487 | | - completeFromCallable( |
488 | | - commitRemoteLogManifestEvent.getRespCallback(), |
489 | | - () -> tryProcessCommitRemoteLogManifest(commitRemoteLogManifestEvent)); |
490 | | - } else if (event instanceof CommitLakeTableSnapshotEvent) { |
491 | | - CommitLakeTableSnapshotEvent commitLakeTableSnapshotEvent = |
492 | | - (CommitLakeTableSnapshotEvent) event; |
493 | | - completeFromCallable( |
494 | | - commitLakeTableSnapshotEvent.getRespCallback(), |
495 | | - () -> tryProcessCommitLakeTableSnapshot(commitLakeTableSnapshotEvent)); |
496 | | - } else if (event instanceof AccessContextEvent) { |
497 | | - AccessContextEvent<?> accessContextEvent = (AccessContextEvent<?>) event; |
498 | | - processAccessContext(accessContextEvent); |
499 | | - } else { |
500 | | - LOG.warn("Unknown event type: {}", event.getClass().getName()); |
501 | | - } |
502 | | - } finally { |
503 | | - updateMetrics(); |
504 | | - } |
505 | | - } |
506 | | - |
507 | | - private void updateMetrics() { |
508 | | - tabletServerCount = coordinatorContext.getLiveTabletServers().size(); |
509 | | - tableCount = coordinatorContext.allTables().size(); |
510 | | - bucketCount = coordinatorContext.bucketLeaderAndIsr().size(); |
511 | | - offlineBucketCount = coordinatorContext.getOfflineBucketCount(); |
512 | | - |
513 | | - int replicasToDeletes = 0; |
514 | | - // for replica in partitions to be deleted |
515 | | - for (TablePartition tablePartition : coordinatorContext.getPartitionsToBeDeleted()) { |
516 | | - for (TableBucketReplica replica : |
517 | | - coordinatorContext.getAllReplicasForPartition( |
518 | | - tablePartition.getTableId(), tablePartition.getPartitionId())) { |
519 | | - replicasToDeletes = |
520 | | - isReplicaToDelete(replica) ? replicasToDeletes + 1 : replicasToDeletes; |
521 | | - } |
522 | | - } |
523 | | - // for replica in tables to be deleted |
524 | | - for (long tableId : coordinatorContext.getTablesToBeDeleted()) { |
525 | | - for (TableBucketReplica replica : coordinatorContext.getAllReplicasForTable(tableId)) { |
526 | | - replicasToDeletes = |
527 | | - isReplicaToDelete(replica) ? replicasToDeletes + 1 : replicasToDeletes; |
528 | | - } |
| 428 | + if (event instanceof CreateTableEvent) { |
| 429 | + processCreateTable((CreateTableEvent) event); |
| 430 | + } else if (event instanceof CreatePartitionEvent) { |
| 431 | + processCreatePartition((CreatePartitionEvent) event); |
| 432 | + } else if (event instanceof DropTableEvent) { |
| 433 | + processDropTable((DropTableEvent) event); |
| 434 | + } else if (event instanceof DropPartitionEvent) { |
| 435 | + processDropPartition((DropPartitionEvent) event); |
| 436 | + } else if (event instanceof NotifyLeaderAndIsrResponseReceivedEvent) { |
| 437 | + processNotifyLeaderAndIsrResponseReceivedEvent( |
| 438 | + (NotifyLeaderAndIsrResponseReceivedEvent) event); |
| 439 | + } else if (event instanceof DeleteReplicaResponseReceivedEvent) { |
| 440 | + processDeleteReplicaResponseReceived((DeleteReplicaResponseReceivedEvent) event); |
| 441 | + } else if (event instanceof NewTabletServerEvent) { |
| 442 | + processNewTabletServer((NewTabletServerEvent) event); |
| 443 | + } else if (event instanceof DeadTabletServerEvent) { |
| 444 | + processDeadTabletServer((DeadTabletServerEvent) event); |
| 445 | + } else if (event instanceof AdjustIsrReceivedEvent) { |
| 446 | + AdjustIsrReceivedEvent adjustIsrReceivedEvent = (AdjustIsrReceivedEvent) event; |
| 447 | + CompletableFuture<AdjustIsrResponse> callback = |
| 448 | + adjustIsrReceivedEvent.getRespCallback(); |
| 449 | + completeFromCallable( |
| 450 | + callback, |
| 451 | + () -> |
| 452 | + makeAdjustIsrResponse( |
| 453 | + tryProcessAdjustIsr( |
| 454 | + adjustIsrReceivedEvent.getLeaderAndIsrMap()))); |
| 455 | + } else if (event instanceof CommitKvSnapshotEvent) { |
| 456 | + CommitKvSnapshotEvent commitKvSnapshotEvent = (CommitKvSnapshotEvent) event; |
| 457 | + CompletableFuture<CommitKvSnapshotResponse> callback = |
| 458 | + commitKvSnapshotEvent.getRespCallback(); |
| 459 | + completeFromCallable(callback, () -> tryProcessCommitKvSnapshot(commitKvSnapshotEvent)); |
| 460 | + } else if (event instanceof CommitRemoteLogManifestEvent) { |
| 461 | + CommitRemoteLogManifestEvent commitRemoteLogManifestEvent = |
| 462 | + (CommitRemoteLogManifestEvent) event; |
| 463 | + completeFromCallable( |
| 464 | + commitRemoteLogManifestEvent.getRespCallback(), |
| 465 | + () -> tryProcessCommitRemoteLogManifest(commitRemoteLogManifestEvent)); |
| 466 | + } else if (event instanceof CommitLakeTableSnapshotEvent) { |
| 467 | + CommitLakeTableSnapshotEvent commitLakeTableSnapshotEvent = |
| 468 | + (CommitLakeTableSnapshotEvent) event; |
| 469 | + completeFromCallable( |
| 470 | + commitLakeTableSnapshotEvent.getRespCallback(), |
| 471 | + () -> tryProcessCommitLakeTableSnapshot(commitLakeTableSnapshotEvent)); |
| 472 | + } else if (event instanceof AccessContextEvent) { |
| 473 | + AccessContextEvent<?> accessContextEvent = (AccessContextEvent<?>) event; |
| 474 | + processAccessContext(accessContextEvent); |
| 475 | + } else { |
| 476 | + LOG.warn("Unknown event type: {}", event.getClass().getName()); |
529 | 477 | } |
530 | | - this.replicasToDeleteCount = replicasToDeletes; |
531 | | - } |
532 | | - |
533 | | - private boolean isReplicaToDelete(TableBucketReplica replica) { |
534 | | - ReplicaState replicaState = coordinatorContext.getReplicaState(replica); |
535 | | - return replicaState != null && replicaState != ReplicaDeletionSuccessful; |
536 | 478 | } |
537 | 479 |
|
538 | 480 | private void processCreateTable(CreateTableEvent createTableEvent) { |
|
0 commit comments