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 <[email protected]>
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 + "");