diff --git a/pom.xml b/pom.xml
index 5780f8b5..0f4cbdb3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
tech.powerjob
powerjob
- 5.1.0
+ 5.1.0-bugfix
pom
powerjob
http://www.powerjob.tech
diff --git a/powerjob-client/pom.xml b/powerjob-client/pom.xml
index 0219cfb5..7ac9a906 100644
--- a/powerjob-client/pom.xml
+++ b/powerjob-client/pom.xml
@@ -5,19 +5,19 @@
powerjob
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
4.0.0
powerjob-client
- 5.1.0
+ 5.1.0-bugfix
jar
5.9.1
1.2.13
1.2.83
- 5.1.0
+ 5.1.0-bugfix
3.2.4
diff --git a/powerjob-common/pom.xml b/powerjob-common/pom.xml
index 61a0986c..3c17297b 100644
--- a/powerjob-common/pom.xml
+++ b/powerjob-common/pom.xml
@@ -5,12 +5,12 @@
powerjob
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
4.0.0
powerjob-common
- 5.1.0
+ 5.1.0-bugfix
jar
diff --git a/powerjob-official-processors/pom.xml b/powerjob-official-processors/pom.xml
index 26f3c1ab..254f0eaf 100644
--- a/powerjob-official-processors/pom.xml
+++ b/powerjob-official-processors/pom.xml
@@ -5,12 +5,12 @@
powerjob
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
4.0.0
powerjob-official-processors
- 5.1.0
+ 5.1.0-bugfix
jar
@@ -20,7 +20,7 @@
5.9.1
1.2.13
- 5.1.0
+ 5.1.0-bugfix
2.2.224
8.0.28
5.3.31
diff --git a/powerjob-remote/pom.xml b/powerjob-remote/pom.xml
index 678e519b..5064f6b1 100644
--- a/powerjob-remote/pom.xml
+++ b/powerjob-remote/pom.xml
@@ -5,7 +5,7 @@
powerjob
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
4.0.0
pom
diff --git a/powerjob-remote/powerjob-remote-benchmark/pom.xml b/powerjob-remote/powerjob-remote-benchmark/pom.xml
index 80eefbb9..917e91c9 100644
--- a/powerjob-remote/powerjob-remote-benchmark/pom.xml
+++ b/powerjob-remote/powerjob-remote-benchmark/pom.xml
@@ -5,7 +5,7 @@
powerjob-remote
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
4.0.0
@@ -21,8 +21,8 @@
1.2.13
2.7.18
- 5.1.0
- 5.1.0
+ 5.1.0-bugfix
+ 5.1.0-bugfix
3.9.0
4.2.9
diff --git a/powerjob-remote/powerjob-remote-framework/pom.xml b/powerjob-remote/powerjob-remote-framework/pom.xml
index b642af7c..3e647ec0 100644
--- a/powerjob-remote/powerjob-remote-framework/pom.xml
+++ b/powerjob-remote/powerjob-remote-framework/pom.xml
@@ -5,11 +5,11 @@
powerjob-remote
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
4.0.0
- 5.1.0
+ 5.1.0-bugfix
powerjob-remote-framework
@@ -17,7 +17,7 @@
8
UTF-8
- 5.1.0
+ 5.1.0-bugfix
0.10.2
diff --git a/powerjob-remote/powerjob-remote-impl-akka/pom.xml b/powerjob-remote/powerjob-remote-impl-akka/pom.xml
index 1647f971..97335b2e 100644
--- a/powerjob-remote/powerjob-remote-impl-akka/pom.xml
+++ b/powerjob-remote/powerjob-remote-impl-akka/pom.xml
@@ -5,19 +5,19 @@
powerjob-remote
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
4.0.0
powerjob-remote-impl-akka
- 5.1.0
+ 5.1.0-bugfix
8
8
UTF-8
- 5.1.0
+ 5.1.0-bugfix
2.6.13
diff --git a/powerjob-remote/powerjob-remote-impl-http/pom.xml b/powerjob-remote/powerjob-remote-impl-http/pom.xml
index 1c6d418f..e911aef8 100644
--- a/powerjob-remote/powerjob-remote-impl-http/pom.xml
+++ b/powerjob-remote/powerjob-remote-impl-http/pom.xml
@@ -5,12 +5,12 @@
powerjob-remote
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
4.0.0
powerjob-remote-impl-http
- 5.1.0
+ 5.1.0-bugfix
8
@@ -18,7 +18,7 @@
UTF-8
4.3.7
- 5.1.0
+ 5.1.0-bugfix
diff --git a/powerjob-server/pom.xml b/powerjob-server/pom.xml
index f4533d83..22bf07ac 100644
--- a/powerjob-server/pom.xml
+++ b/powerjob-server/pom.xml
@@ -5,12 +5,12 @@
powerjob
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
4.0.0
powerjob-server
- 5.1.0
+ 5.1.0-bugfix
pom
@@ -51,9 +51,9 @@
3.0.10
9.2.1
- 5.1.0
- 5.1.0
- 5.1.0
+ 5.1.0-bugfix
+ 5.1.0-bugfix
+ 5.1.0-bugfix
1.6.14
3.17.1
1.12.665
diff --git a/powerjob-server/powerjob-server-auth/pom.xml b/powerjob-server/powerjob-server-auth/pom.xml
index 7242fdf7..5e232bec 100644
--- a/powerjob-server/powerjob-server-auth/pom.xml
+++ b/powerjob-server/powerjob-server-auth/pom.xml
@@ -6,7 +6,7 @@
tech.powerjob
powerjob-server
- 5.1.0
+ 5.1.0-bugfix
4.0.0
diff --git a/powerjob-server/powerjob-server-common/pom.xml b/powerjob-server/powerjob-server-common/pom.xml
index 3b61ba0e..13738427 100644
--- a/powerjob-server/powerjob-server-common/pom.xml
+++ b/powerjob-server/powerjob-server-common/pom.xml
@@ -5,7 +5,7 @@
powerjob-server
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
../pom.xml
4.0.0
diff --git a/powerjob-server/powerjob-server-core/pom.xml b/powerjob-server/powerjob-server-core/pom.xml
index 11b81f55..c6b2278e 100644
--- a/powerjob-server/powerjob-server-core/pom.xml
+++ b/powerjob-server/powerjob-server-core/pom.xml
@@ -5,7 +5,7 @@
powerjob-server
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
../pom.xml
4.0.0
diff --git a/powerjob-server/powerjob-server-extension/pom.xml b/powerjob-server/powerjob-server-extension/pom.xml
index 6b3686ae..776d9f82 100644
--- a/powerjob-server/powerjob-server-extension/pom.xml
+++ b/powerjob-server/powerjob-server-extension/pom.xml
@@ -5,7 +5,7 @@
powerjob-server
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
../pom.xml
4.0.0
diff --git a/powerjob-server/powerjob-server-migrate/pom.xml b/powerjob-server/powerjob-server-migrate/pom.xml
index 724d851f..d7b8cfbe 100644
--- a/powerjob-server/powerjob-server-migrate/pom.xml
+++ b/powerjob-server/powerjob-server-migrate/pom.xml
@@ -5,7 +5,7 @@
powerjob-server
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
../pom.xml
4.0.0
diff --git a/powerjob-server/powerjob-server-monitor/pom.xml b/powerjob-server/powerjob-server-monitor/pom.xml
index 198abcd8..f93b02fd 100644
--- a/powerjob-server/powerjob-server-monitor/pom.xml
+++ b/powerjob-server/powerjob-server-monitor/pom.xml
@@ -5,7 +5,7 @@
powerjob-server
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
../pom.xml
4.0.0
diff --git a/powerjob-server/powerjob-server-persistence/pom.xml b/powerjob-server/powerjob-server-persistence/pom.xml
index d3f78c11..aeaf95a9 100644
--- a/powerjob-server/powerjob-server-persistence/pom.xml
+++ b/powerjob-server/powerjob-server-persistence/pom.xml
@@ -5,7 +5,7 @@
powerjob-server
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
../pom.xml
4.0.0
diff --git a/powerjob-server/powerjob-server-persistence/src/main/java/tech/powerjob/server/persistence/storage/impl/PostgresqlSeriesDfsService.java b/powerjob-server/powerjob-server-persistence/src/main/java/tech/powerjob/server/persistence/storage/impl/PostgresqlSeriesDfsService.java
index 95644ff9..d8435679 100644
--- a/powerjob-server/powerjob-server-persistence/src/main/java/tech/powerjob/server/persistence/storage/impl/PostgresqlSeriesDfsService.java
+++ b/powerjob-server/powerjob-server-persistence/src/main/java/tech/powerjob/server/persistence/storage/impl/PostgresqlSeriesDfsService.java
@@ -15,32 +15,24 @@ import org.apache.commons.lang3.time.DateUtils;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.core.env.Environment;
+import tech.powerjob.common.enums.SwitchableStatus;
import tech.powerjob.common.serialize.JsonUtils;
import tech.powerjob.common.utils.CommonUtils;
-import tech.powerjob.common.enums.SwitchableStatus;
import tech.powerjob.server.common.spring.condition.PropertyAndOneBeanCondition;
-import tech.powerjob.server.extension.dfs.DFsService;
-import tech.powerjob.server.extension.dfs.DownloadRequest;
-import tech.powerjob.server.extension.dfs.FileLocation;
-import tech.powerjob.server.extension.dfs.FileMeta;
-import tech.powerjob.server.extension.dfs.StoreRequest;
+import tech.powerjob.server.extension.dfs.*;
import tech.powerjob.server.persistence.storage.AbstractDFsService;
+import javax.annotation.Priority;
+import javax.sql.DataSource;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
-import java.sql.Blob;
-import java.sql.Connection;
-import java.sql.Date;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
+import java.sql.*;
import java.util.List;
import java.util.Map;
import java.util.Optional;
-import javax.annotation.Priority;
-import javax.sql.DataSource;
/**
* postgresql 数据库存储,使用的版本是14
@@ -93,13 +85,13 @@ public class PostgresqlSeriesDfsService extends AbstractDFsService {
private static final String DEFAULT_TABLE_NAME = "powerjob_files";
- private static final String POWERJOB_FILES_ID_SEQ = "CREATE SEQUENCE powerjob_files_id_seq\n" +
+ private static final String POWERJOB_FILES_ID_SEQ = "CREATE SEQUENCE if not exists powerjob_files_id_seq\n" +
" START WITH 1\n" +
" INCREMENT BY 1\n" +
" NO MINVALUE\n" +
" NO MAXVALUE\n" +
" CACHE 1;" ;
- private static final String CREATE_TABLE_SQL = "CREATE TABLE powerjob_files (\n" +
+ private static final String CREATE_TABLE_SQL = "CREATE TABLE if not exists powerjob_files (\n" +
" id bigint NOT NULL DEFAULT nextval('powerjob_files_id_seq') PRIMARY KEY,\n" +
" bucket varchar(255) NOT NULL,\n" +
" name varchar(255) NOT NULL,\n" +
@@ -160,7 +152,6 @@ public class PostgresqlSeriesDfsService extends AbstractDFsService {
con = dataSource.getConnection();
//pg库提示报错:org.postgresql.util.PSQLException: Large Objects may not be used in auto-commit mode.
con.setAutoCommit(false);
- log.info("[PostgresqlSeriesDfsService] set autocommit false.");
pst = con.prepareStatement(insertSQL);
@@ -185,13 +176,12 @@ public class PostgresqlSeriesDfsService extends AbstractDFsService {
if(con != null){
con.rollback();
}
- log.error("[PostgresqlSeriesDfsService] store [{}] failed!", fileLocation);
+ log.error("[PostgresqlSeriesDfsService] store [{}] failed!", fileLocation, e);
ExceptionUtils.rethrow(e);
}finally {
if(con != null){
//设置回来,恢复自动提交模式
con.setAutoCommit(true);
- log.info("[PostgresqlSeriesDfsService] set autocommit true.");
con.close();
}
if(null != pst){
@@ -246,8 +236,17 @@ public class PostgresqlSeriesDfsService extends AbstractDFsService {
return;
}
- Blob dataBlob = resultSet.getBlob("data");
- FileUtils.copyInputStreamToFile(new BufferedInputStream(dataBlob.getBinaryStream()), downloadRequest.getTarget());
+ // 在 PostgreSQL 中,bytea 类型的数据并不直接映射为 JDBC 的 Blob 类型。相反,bytea 数据应当被处理为字节数组 (byte[]) 而不是 Blob 对象
+ try {
+ byte[] dataBytes = resultSet.getBytes("data");
+ try (FileOutputStream fos = new FileOutputStream(downloadRequest.getTarget())) {
+ fos.write(dataBytes);
+ }
+ } catch (Exception ignore) {
+ // 测试发现会报错 报错“不良的类型值 long”;但并未有用户反馈问题,暂时保留老写法,可能是不同DB获取方式不同?
+ Blob dataBlob = resultSet.getBlob("data");
+ FileUtils.copyInputStreamToFile(new BufferedInputStream(dataBlob.getBinaryStream()), downloadRequest.getTarget());
+ }
log.info("[PostgresqlSeriesDfsService] download [{}] successfully, cost: {}", fileLocation, sw);
@@ -331,7 +330,7 @@ public class PostgresqlSeriesDfsService extends AbstractDFsService {
HikariConfig config = new HikariConfig();
- config.setDriverClassName(property.driver);
+ config.setDriverClassName(StringUtils.isEmpty(property.driver) ? "org.postgresql.Driver" : property.driver);
config.setJdbcUrl(property.url);
config.setUsername(property.username);
config.setPassword(property.password);
@@ -404,4 +403,4 @@ public class PostgresqlSeriesDfsService extends AbstractDFsService {
return DFsService.class;
}
}
-}
+}
\ No newline at end of file
diff --git a/powerjob-server/powerjob-server-remote/pom.xml b/powerjob-server/powerjob-server-remote/pom.xml
index 74c10daf..82f294cc 100644
--- a/powerjob-server/powerjob-server-remote/pom.xml
+++ b/powerjob-server/powerjob-server-remote/pom.xml
@@ -5,7 +5,7 @@
powerjob-server
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
../pom.xml
4.0.0
diff --git a/powerjob-server/powerjob-server-starter/pom.xml b/powerjob-server/powerjob-server-starter/pom.xml
index 8a9dd15a..2e5ff247 100644
--- a/powerjob-server/powerjob-server-starter/pom.xml
+++ b/powerjob-server/powerjob-server-starter/pom.xml
@@ -5,7 +5,7 @@
powerjob-server
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
../pom.xml
4.0.0
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/openapi/OpenApiInterceptor.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/openapi/OpenApiInterceptor.java
index ecd632eb..23d37d8a 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/openapi/OpenApiInterceptor.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/openapi/OpenApiInterceptor.java
@@ -46,6 +46,7 @@ public class OpenApiInterceptor implements HandlerInterceptor {
public boolean preHandle(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, @NonNull Object handler) throws Exception {
if (!enableOpenApiAuth) {
+ response.addHeader(OpenAPIConstant.RESPONSE_HEADER_AUTH_STATUS, Boolean.TRUE.toString());
return true;
}
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/WorkerStatusVO.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/WorkerStatusVO.java
index a8a6b101..453887fb 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/WorkerStatusVO.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/WorkerStatusVO.java
@@ -6,7 +6,7 @@ import tech.powerjob.common.model.SystemMetrics;
import tech.powerjob.common.utils.CommonUtils;
import tech.powerjob.server.common.module.WorkerInfo;
-import java.text.DecimalFormat;
+import java.text.NumberFormat;
/**
* Worker机器状态
@@ -48,32 +48,40 @@ public class WorkerStatusVO {
* 27.7%(2.9/8.0 GB)
*/
private static final String OTHER_FORMAT = "%s%%(%s / %s GB)";
- private static final DecimalFormat df = new DecimalFormat("#.#");
private static final double THRESHOLD = 0.8;
+ // 静态 NumberFormat 实例,线程安全
+ private static final NumberFormat NUMBER_FORMAT;
+ // 静态初始化块,配置 NumberFormat 的格式
+ static {
+ NUMBER_FORMAT = NumberFormat.getInstance();
+ // 设置最小小数位数为 0
+ NUMBER_FORMAT.setMinimumFractionDigits(0);
+ // 设置最大小数位数为 1
+ NUMBER_FORMAT.setMaximumFractionDigits(1);
+ }
public WorkerStatusVO(WorkerInfo workerInfo) {
-
SystemMetrics systemMetrics = workerInfo.getSystemMetrics();
this.status = 1;
this.address = workerInfo.getAddress();
- this.cpuLoad = String.format(CPU_FORMAT, df.format(systemMetrics.getCpuLoad()), systemMetrics.getCpuProcessors());
+ this.cpuLoad = String.format(CPU_FORMAT, NUMBER_FORMAT.format(systemMetrics.getCpuLoad()), systemMetrics.getCpuProcessors());
if (systemMetrics.getCpuLoad() > systemMetrics.getCpuProcessors() * THRESHOLD) {
this.status ++;
}
- String menL = df.format(systemMetrics.getJvmMemoryUsage() * 100);
- String menUsed = df.format(systemMetrics.getJvmUsedMemory());
- String menMax = df.format(systemMetrics.getJvmMaxMemory());
+ String menL = NUMBER_FORMAT.format(systemMetrics.getJvmMemoryUsage() * 100);
+ String menUsed = NUMBER_FORMAT.format(systemMetrics.getJvmUsedMemory());
+ String menMax = NUMBER_FORMAT.format(systemMetrics.getJvmMaxMemory());
this.memoryLoad = String.format(OTHER_FORMAT, menL, menUsed, menMax);
if (systemMetrics.getJvmMemoryUsage() > THRESHOLD) {
this.status ++;
}
- String diskL = df.format(systemMetrics.getDiskUsage() * 100);
- String diskUsed = df.format(systemMetrics.getDiskUsed());
- String diskMax = df.format(systemMetrics.getDiskTotal());
+ String diskL = NUMBER_FORMAT.format(systemMetrics.getDiskUsage() * 100);
+ String diskUsed = NUMBER_FORMAT.format(systemMetrics.getDiskUsed());
+ String diskMax = NUMBER_FORMAT.format(systemMetrics.getDiskTotal());
this.diskLoad = String.format(OTHER_FORMAT, diskL, diskUsed, diskMax);
if (systemMetrics.getDiskUsage() > THRESHOLD) {
this.status ++;
diff --git a/powerjob-worker-agent/pom.xml b/powerjob-worker-agent/pom.xml
index e5626b12..aef2a46a 100644
--- a/powerjob-worker-agent/pom.xml
+++ b/powerjob-worker-agent/pom.xml
@@ -5,24 +5,24 @@
powerjob
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
4.0.0
powerjob-worker-agent
- 5.1.0
+ 5.1.0-bugfix
jar
- 5.1.0
+ 5.1.0-bugfix
1.2.13
4.3.2
5.3.31
2.3.4.RELEASE
- 5.1.0
+ 5.1.0-bugfix
8.0.28
diff --git a/powerjob-worker-agent/src/main/java/tech/powerjob/agent/MainApplication.java b/powerjob-worker-agent/src/main/java/tech/powerjob/agent/MainApplication.java
index f1c8a184..ec1fc98d 100644
--- a/powerjob-worker-agent/src/main/java/tech/powerjob/agent/MainApplication.java
+++ b/powerjob-worker-agent/src/main/java/tech/powerjob/agent/MainApplication.java
@@ -12,6 +12,9 @@ import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* powerjob-worker-agent entry
*
@@ -56,7 +59,8 @@ public class MainApplication implements Runnable {
cfg.setAppName(appName);
cfg.setPort(port);
- cfg.setServerAddress(Splitter.on(",").splitToList(server));
+ List servers = new ArrayList<>(Splitter.on(",").splitToList(server));
+ cfg.setServerAddress(servers);
cfg.setStoreStrategy(StoreStrategy.MEMORY.name().equals(storeStrategy) ? StoreStrategy.MEMORY : StoreStrategy.DISK);
cfg.setMaxResultLength(length);
cfg.setTag(tag);
diff --git a/powerjob-worker-samples/pom.xml b/powerjob-worker-samples/pom.xml
index 44cc3f7e..24aa9f16 100644
--- a/powerjob-worker-samples/pom.xml
+++ b/powerjob-worker-samples/pom.xml
@@ -5,22 +5,22 @@
powerjob
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
4.0.0
powerjob-worker-samples
- 5.1.0
+ 5.1.0-bugfix
2.7.18
- 5.1.0
+ 5.1.0-bugfix
1.2.83
- 5.1.0
+ 5.1.0-bugfix
true
- 5.1.0
+ 5.1.0-bugfix
diff --git a/powerjob-worker-spring-boot-starter/pom.xml b/powerjob-worker-spring-boot-starter/pom.xml
index 9505dae6..094454c5 100644
--- a/powerjob-worker-spring-boot-starter/pom.xml
+++ b/powerjob-worker-spring-boot-starter/pom.xml
@@ -5,16 +5,16 @@
powerjob
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
4.0.0
powerjob-worker-spring-boot-starter
- 5.1.0
+ 5.1.0-bugfix
jar
- 5.1.0
+ 5.1.0-bugfix
2.7.18
diff --git a/powerjob-worker/pom.xml b/powerjob-worker/pom.xml
index 0ace0c25..ae74a553 100644
--- a/powerjob-worker/pom.xml
+++ b/powerjob-worker/pom.xml
@@ -5,12 +5,12 @@
powerjob
tech.powerjob
- 5.1.0
+ 5.1.0-bugfix
4.0.0
powerjob-worker
- 5.1.0
+ 5.1.0-bugfix
jar
@@ -21,10 +21,10 @@
1.2.13
- 5.1.0
- 5.1.0
- 5.1.0
- 5.1.0
+ 5.1.0-bugfix
+ 5.1.0-bugfix
+ 5.1.0-bugfix
+ 5.1.0-bugfix