You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by to...@apache.org on 2022/07/17 15:43:03 UTC
[shardingsphere] branch master updated: Refactor DatabaseVersionPersistService (#19297)
This is an automated email from the ASF dual-hosted git repository.
totalo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 787f29a977b Refactor DatabaseVersionPersistService (#19297)
787f29a977b is described below
commit 787f29a977b19429e9e3f6ad2e74942dc8e7d5bb
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sun Jul 17 23:42:58 2022 +0800
Refactor DatabaseVersionPersistService (#19297)
---
.../service/DatabaseVersionPersistService.java | 30 +++++++++++-----------
.../subscriber/ScalingRegistrySubscriber.java | 5 ++--
2 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/service/DatabaseVersionPersistService.java b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/service/DatabaseVersionPersistService.java
index fc112739415..b60e9dd2c13 100644
--- a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/service/DatabaseVersionPersistService.java
+++ b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/service/DatabaseVersionPersistService.java
@@ -33,24 +33,24 @@ public final class DatabaseVersionPersistService {
private final PersistRepository repository;
/**
- * Get database active version.
+ * Get active version.
*
* @param databaseName database name
- * @return active version
+ * @return active database version
*/
- public Optional<String> getDatabaseActiveVersion(final String databaseName) {
+ public Optional<String> getActiveVersion(final String databaseName) {
return Optional.ofNullable(repository.get(DatabaseMetaDataNode.getActiveVersionPath(databaseName)));
}
/**
- * Verify the version is the active version.
+ * Judge whether active version.
*
* @param databaseName database name
* @param version version
- * @return true if the version is active version, false if not
+ * @return is active version or not
*/
public boolean isActiveVersion(final String databaseName, final String version) {
- Optional<String> actualVersion = getDatabaseActiveVersion(databaseName);
+ Optional<String> actualVersion = getActiveVersion(databaseName);
return actualVersion.isPresent() && actualVersion.get().equals(version);
}
@@ -61,15 +61,15 @@ public final class DatabaseVersionPersistService {
* @return new version
*/
public Optional<String> createNewVersion(final String databaseName) {
- Optional<String> activeVersion = getDatabaseActiveVersion(databaseName);
- if (activeVersion.isPresent()) {
- String newVersion = String.valueOf(new AtomicLong(Long.parseLong(activeVersion.get())).incrementAndGet());
- repository.persist(DatabaseMetaDataNode.getRulePath(databaseName, newVersion), repository.get(DatabaseMetaDataNode.getRulePath(databaseName, activeVersion.get())));
- repository.persist(DatabaseMetaDataNode.getMetaDataDataSourcePath(databaseName, newVersion),
- repository.get(DatabaseMetaDataNode.getMetaDataDataSourcePath(databaseName, activeVersion.get())));
- return Optional.of(newVersion);
+ Optional<String> activeVersion = getActiveVersion(databaseName);
+ if (!activeVersion.isPresent()) {
+ return Optional.empty();
}
- return Optional.empty();
+ String newVersion = String.valueOf(new AtomicLong(Long.parseLong(activeVersion.get())).incrementAndGet());
+ repository.persist(DatabaseMetaDataNode.getRulePath(databaseName, newVersion), repository.get(DatabaseMetaDataNode.getRulePath(databaseName, activeVersion.get())));
+ repository.persist(
+ DatabaseMetaDataNode.getMetaDataDataSourcePath(databaseName, newVersion), repository.get(DatabaseMetaDataNode.getMetaDataDataSourcePath(databaseName, activeVersion.get())));
+ return Optional.of(newVersion);
}
/**
@@ -79,7 +79,7 @@ public final class DatabaseVersionPersistService {
* @param version version
*/
public void persistActiveVersion(final String databaseName, final String version) {
- Optional<String> activeVersion = getDatabaseActiveVersion(databaseName);
+ Optional<String> activeVersion = getActiveVersion(databaseName);
if (activeVersion.isPresent() && !activeVersion.get().equals(version)) {
repository.persist(DatabaseMetaDataNode.getActiveVersionPath(databaseName), version);
}
diff --git a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/cache/subscriber/ScalingRegistrySubscriber.java b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/cache/subscriber/ScalingRegistrySubscriber.java
index b674406fee1..e2980765dc4 100644
--- a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/cache/subscriber/ScalingRegistrySubscriber.java
+++ b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/cache/subscriber/ScalingRegistrySubscriber.java
@@ -32,6 +32,7 @@ import java.util.Optional;
/**
* Scaling registry subscriber.
*/
+@SuppressWarnings("UnstableApiUsage")
@Slf4j
// TODO move to scaling module
public final class ScalingRegistrySubscriber {
@@ -57,7 +58,7 @@ public final class ScalingRegistrySubscriber {
@Subscribe
public void startScaling(final MetadataVersionPreparedEvent event) {
String databaseName = event.getDatabaseName();
- String activeVersion = databaseVersionPersistService.getDatabaseActiveVersion(databaseName).get();
+ String activeVersion = databaseVersionPersistService.getActiveVersion(databaseName).get();
String sourceDataSource = repository.get(DatabaseMetaDataNode.getMetaDataDataSourcePath(databaseName, activeVersion));
String targetDataSource = repository.get(DatabaseMetaDataNode.getMetaDataDataSourcePath(databaseName, event.getVersion()));
String sourceRule = repository.get(DatabaseMetaDataNode.getRulePath(databaseName, activeVersion));
@@ -77,7 +78,7 @@ public final class ScalingRegistrySubscriber {
public void scalingTaskFinished(final ScalingTaskFinishedEvent event) {
log.info("scalingTaskFinished, event={}", event);
int targetActiveVersion = event.getTargetActiveVersion();
- Optional<String> activeVersion = databaseVersionPersistService.getDatabaseActiveVersion(event.getTargetSchemaName());
+ Optional<String> activeVersion = databaseVersionPersistService.getActiveVersion(event.getTargetSchemaName());
if (activeVersion.isPresent() && targetActiveVersion == Integer.parseInt(activeVersion.get())) {
databaseVersionPersistService.persistActiveVersion(event.getTargetSchemaName(), event.getTargetNewVersion() + "");
databaseVersionPersistService.deleteVersion(event.getTargetSchemaName(), targetActiveVersion + "");