Code Monkey home page Code Monkey logo

duic's Issues

链接postgresql启动报错

java -Dspring.profiles.active=postgresql -jar duic-2.3.2-beta.jar


|_ _ . (_) .' ___ | | | . \ __ _ __ / .' _|
| | | |[ | | | [ || |
| |.' / | _/ |, | |\ .___.'\ |______.' '.__.'_/[___].____ .'
:: duic :: (v2.3.2-beta)

2019-02-02 22:01:47,049 INFO i.z.d.server.Application$Companion - Starting Application.Companion v2.3.2-beta on ubuntu with PID 16816 (/home/bill/Downloads/duic-2.3.2-beta.jar started by bill in /home/bill/Downloads)
2019-02-02 22:01:47,051 INFO i.z.d.server.Application$Companion - The following profiles are active: postgresql
2019-02-02 22:01:48,588 INFO o.s.c.a.ConfigurationClassEnhancer - @bean method Application.kotlinPropertyConfigurer is non-static and returns an object assignable to Spring's BeanFactoryPostProcessor interface. This will result in a failure to process annotations such as @Autowired, @resource and @PostConstruct within the method's declaring @configuration class. Add the 'static' modifier to this method to avoid these container lifecycle issues; see @bean javadoc for complete details.
2019-02-02 22:01:49,695 INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
2019-02-02 22:01:50,279 INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.
2019-02-02 22:01:55,034 INFO o.s.s.c.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
2019-02-02 22:01:55,379 INFO o.s.b.w.e.netty.NettyWebServer - Netty started on port(s): 7777
2019-02-02 22:01:55,391 INFO i.z.d.server.Application$Companion - Started Application.Companion in 9.799 seconds (JVM running for 10.636)
2019-02-02 22:01:55,581 ERROR reactor.core.scheduler.Schedulers - Scheduler worker in group main failed with an uncaught exception
reactor.core.Exceptions$ErrorCallbackNotImplemented: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT VERSION() AS 'version']; nested exception is org.postgresql.util.PSQLException: ERROR: syntax error at or near "'version'"
Position: 21
Caused by: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT VERSION() AS 'version']; nested exception is org.postgresql.util.PSQLException: ERROR: syntax error at or near "'version'"
Position: 21
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:234)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1444)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:632)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:669)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:694)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:748)
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForObject(NamedParameterJdbcTemplate.java:235)
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForObject(NamedParameterJdbcTemplate.java:244)
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForMap(NamedParameterJdbcTemplate.java:272)
at io.zhudy.duic.repository.impl.PostgreSQLServerRepository$findDbVersion$1$v$1.doInTransaction(PostgreSQLServerRepository.kt:112)
at io.zhudy.duic.repository.impl.PostgreSQLServerRepository$findDbVersion$1$v$1.doInTransaction(PostgreSQLServerRepository.kt:34)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
at io.zhudy.duic.repository.impl.PostgreSQLServerRepository$findDbVersion$1.accept(PostgreSQLServerRepository.kt:111)
at io.zhudy.duic.repository.impl.PostgreSQLServerRepository$findDbVersion$1.accept(PostgreSQLServerRepository.kt:34)
at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:53)
at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:61)
at reactor.core.publisher.Mono.subscribe(Mono.java:3695)
at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:123)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Assembly trace from producer [reactor.core.publisher.MonoCreate] :
reactor.core.publisher.Mono.create(Mono.java:183)
io.zhudy.duic.repository.impl.PostgreSQLServerRepository.findDbVersion(PostgreSQLServerRepository.kt:110)
Error has been observed by the following operator(s):
|_ Mono.create ⇢ io.zhudy.duic.repository.impl.PostgreSQLServerRepository.findDbVersion(PostgreSQLServerRepository.kt:110)
|_ Mono.subscribeOn ⇢ io.zhudy.duic.repository.impl.PostgreSQLServerRepository.findDbVersion(PostgreSQLServerRepository.kt:116)

Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "'version'"
Position: 21
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2433)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2178)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:306)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:441)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:365)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:155)
at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:118)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:678)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:617)
... 22 common frames omitted
2019-02-02 22:01:58,398 INFO o.s.s.c.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
2019-02-02 22:01:58,402 INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated...
2019-02-02 22:01:58,431 ERROR io.zhudy.duic.service.ServerService - unregister 服务失败: ubuntu:7777
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.lang.NullPointerException
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:305)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:137)
at io.zhudy.duic.repository.impl.PostgreSQLServerRepository$register$1.accept(PostgreSQLServerRepository.kt:41)
at io.zhudy.duic.repository.impl.PostgreSQLServerRepository$register$1.accept(PostgreSQLServerRepository.kt:34)
at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:53)
at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:61)
at reactor.core.publisher.Mono.subscribe(Mono.java:3695)
at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:123)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Assembly trace from producer [reactor.core.publisher.MonoCreate] :
reactor.core.publisher.Mono.create(Mono.java:183)
io.zhudy.duic.repository.impl.PostgreSQLServerRepository.register(PostgreSQLServerRepository.kt:40)
Error has been observed by the following operator(s):
|_ Mono.create ⇢ io.zhudy.duic.repository.impl.PostgreSQLServerRepository.register(PostgreSQLServerRepository.kt:40)
|_ Mono.subscribeOn ⇢ io.zhudy.duic.repository.impl.PostgreSQLServerRepository.register(PostgreSQLServerRepository.kt:52)

Caused by: java.lang.NullPointerException: null
at com.zaxxer.hikari.pool.HikariProxyConnection.getAutoCommit(HikariProxyConnection.java)
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:278)
... 15 common frames omitted
2019-02-02 22:01:58,440 INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed.

启动增加基本参数校验

在启动前检查必要的参数配置。

如未配置 spring.data.mongo.uri 参数时,提供更加明确的错误信息。

去除正常逻辑日志打印

2019-03-04 14:39:13,493 ERROR io.zhudy.duic.web.config.WebConfig - {}
java.lang.RuntimeException: io.zhudy.duic.BizCodeExceptionio.zhudy.duic.BizCodeException: {"code": 1000, "message": "未找到应用"}, message: 未找到应用 meme/lian_mai
	at io.zhudy.duic.web.config.WebConfig$1.accept(WebConfig.kt:63)
	at io.zhudy.duic.web.config.WebConfig$1.accept(WebConfig.kt:51)
	at reactor.core.publisher.Operators.onErrorDropped(Operators.java:514)
	at reactor.core.publisher.FluxFlatMap$FlatMapMain.innerError(FluxFlatMap.java:814)
	at reactor.core.publisher.FluxFlatMap$FlatMapInner.onError(FluxFlatMap.java:950)
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:358)
	at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onError(FluxPeekFuseable.java:228)
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:358)
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:1747)
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:358)
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:1747)
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:358)
	at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onError(FluxMapFuseable.java:134)
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:358)
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:1747)
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:358)
	at reactor.core.publisher.Operators.error(Operators.java:181)
	at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:48)
	at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:61)
	at reactor.core.publisher.Mono.subscribe(Mono.java:3694)
	at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:75)
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:363)
	at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:144)
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:363)
	at reactor.core.publisher.MonoNext$NextSubscriber.onComplete(MonoNext.java:96)
	at com.mongodb.reactivestreams.client.internal.ObservableToPublisher$1.onComplete(ObservableToPublisher.java:78)
	at com.mongodb.async.client.AbstractSubscription.onComplete(AbstractSubscription.java:145)
	at com.mongodb.async.client.AbstractSubscription.processResultsQueue(AbstractSubscription.java:211)
	at com.mongodb.async.client.AbstractSubscription.tryProcessResultsQueue(AbstractSubscription.java:159)
	at com.mongodb.async.client.SingleResultCallbackSubscription$1.onResult(SingleResultCallbackSubscription.java:48)
	at com.mongodb.async.client.FindIterableImpl$1$1.onResult(FindIterableImpl.java:212)
	at com.mongodb.async.client.FindIterableImpl$1$1.onResult(FindIterableImpl.java:205)
	at com.mongodb.operation.AsyncQueryBatchCursor.next(AsyncQueryBatchCursor.java:141)
	at com.mongodb.operation.AsyncQueryBatchCursor.next(AsyncQueryBatchCursor.java:100)
	at com.mongodb.async.client.FindIterableImpl$1.onResult(FindIterableImpl.java:205)
	at com.mongodb.async.client.FindIterableImpl$1.onResult(FindIterableImpl.java:199)
	at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:49)
	at com.mongodb.async.client.OperationExecutorImpl$1$1.onResult(OperationExecutorImpl.java:82)
	at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:49)
	at com.mongodb.operation.FindOperation$3.onResult(FindOperation.java:807)
	at com.mongodb.operation.OperationHelper$ReferenceCountedReleasingWrappedCallback.onResult(OperationHelper.java:364)
	at com.mongodb.operation.CommandOperationHelper$2.onResult(CommandOperationHelper.java:405)
	at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:49)
	at com.mongodb.internal.connection.DefaultServer$DefaultServerProtocolExecutor$2.onResult(DefaultServer.java:227)
	at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:49)
	at com.mongodb.internal.connection.CommandProtocolImpl$1.onResult(CommandProtocolImpl.java:85)
	at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection$1.onResult(DefaultConnectionPool.java:461)
	at com.mongodb.internal.connection.UsageTrackingInternalConnection$2.onResult(UsageTrackingInternalConnection.java:111)
	at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:49)
	at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:379)
	at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:356)
	at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback$MessageCallback.onResult(InternalStreamConnection.java:651)
	at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback$MessageCallback.onResult(InternalStreamConnection.java:618)
	at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:494)
	at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:491)
	at com.mongodb.internal.connection.AsynchronousSocketChannelStream$BasicCompletionHandler.completed(AsynchronousSocketChannelStream.java:252)
	at com.mongodb.internal.connection.AsynchronousSocketChannelStream$BasicCompletionHandler.completed(AsynchronousSocketChannelStream.java:235)
	at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
	at sun.nio.ch.Invoker.invokeDirect(Invoker.java:157)
	at sun.nio.ch.UnixAsynchronousSocketChannelImpl.implRead(UnixAsynchronousSocketChannelImpl.java:553)
	at sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:276)
	at sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:297)
	at com.mongodb.internal.connection.AsynchronousSocketChannelStream.readAsync(AsynchronousSocketChannelStream.java:147)
	at com.mongodb.internal.connection.InternalStreamConnection.readAsync(InternalStreamConnection.java:491)
	at com.mongodb.internal.connection.InternalStreamConnection.access$1000(InternalStreamConnection.java:74)
	at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback.onResult(InternalStreamConnection.java:608)
	at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback.onResult(InternalStreamConnection.java:593)
	at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:494)
	at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:491)
	at com.mongodb.internal.connection.AsynchronousSocketChannelStream$BasicCompletionHandler.completed(AsynchronousSocketChannelStream.java:252)
	at com.mongodb.internal.connection.AsynchronousSocketChannelStream$BasicCompletionHandler.completed(AsynchronousSocketChannelStream.java:235)
	at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
	at sun.nio.ch.Invoker.invokeDirect(Invoker.java:157)
	at sun.nio.ch.UnixAsynchronousSocketChannelImpl.implRead(UnixAsynchronousSocketChannelImpl.java:553)
	at sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:276)
	at sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:297)
	at com.mongodb.internal.connection.AsynchronousSocketChannelStream.readAsync(AsynchronousSocketChannelStream.java:147)
	at com.mongodb.internal.connection.InternalStreamConnection.readAsync(InternalStreamConnection.java:491)
	at com.mongodb.internal.connection.InternalStreamConnection.access$1000(InternalStreamConnection.java:74)
	at com.mongodb.internal.connection.InternalStreamConnection$2.onResult(InternalStreamConnection.java:356)
	at com.mongodb.internal.connection.InternalStreamConnection$2.onResult(InternalStreamConnection.java:345)
	at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:49)
	at com.mongodb.internal.connection.InternalStreamConnection$3.completed(InternalStreamConnection.java:448)
	at com.mongodb.internal.connection.InternalStreamConnection$3.completed(InternalStreamConnection.java:445)
	at com.mongodb.internal.connection.AsynchronousSocketChannelStream$1.completed(AsynchronousSocketChannelStream.java:133)
	at com.mongodb.internal.connection.AsynchronousSocketChannelStream$1.completed(AsynchronousSocketChannelStream.java:127)
	at com.mongodb.internal.connection.AsynchronousSocketChannelStream$2.completed(AsynchronousSocketChannelStream.java:198)
	at com.mongodb.internal.connection.AsynchronousSocketChannelStream$2.completed(AsynchronousSocketChannelStream.java:192)
	at com.mongodb.internal.connection.AsynchronousSocketChannelStream$AsyncWritableByteChannelAdapter$WriteCompletionHandler.completed(AsynchronousSocketChannelStream.java:224)
	at com.mongodb.internal.connection.AsynchronousSocketChannelStream$AsyncWritableByteChannelAdapter$WriteCompletionHandler.completed(AsynchronousSocketChannelStream.java:215)
	at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
	at sun.nio.ch.Invoker$2.run(Invoker.java:218)
	at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: io.zhudy.duic.BizCodeException: {"code": 1000, "message": "未找到应用"}, message: 未找到应用 meme/lian_mai
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Assembly trace from producer [reactor.core.publisher.MonoDefer] :
	reactor.core.publisher.Mono.defer(Mono.java:198)
	io.zhudy.duic.service.AppService.findOne(AppService.kt:417)
Error has been observed by the following operator(s):
	|_	Mono.defer ⇢ io.zhudy.duic.service.AppService.findOne(AppService.kt:417)
	|_	Mono.switchIfEmpty ⇢ io.zhudy.duic.service.AppService.findOne(AppService.kt:417)
	|_	Mono.map ⇢ io.zhudy.duic.service.AppService.loadOne(AppService.kt:525)
	|_	Mono.switchIfEmpty ⇢ io.zhudy.duic.service.AppService.loadOne(AppService.kt:529)

全新 Admin 操作控制台

Admin Console 控制改版,提供更便捷的操作方式,提升更具观赏性的界面。

  1. 支持打开多个配置编辑窗口
  2. 全新 DARK 主题
  3. 优化 JS 加载方式,提高访问速度

Deadlock

我使用的是duic 2.2.2版本和MySQL 部署,但是在启动日志中会出现死锁的提示。如下:
2019-02-16 16:27:53,729 ERROR reactor.core.scheduler.Schedulers - Scheduler worker in group main failed with an uncaught exception
reactor.core.Exceptions$ErrorCallbackNotImplemented: org.springframework.dao.DeadlockLoserDataAccessException: PreparedStatementCallback; SQL [DELETE FROM DUIC_SERVER WHERE ACTIVE_AT<=?(conn=109) Deadlock found when trying to get lock; try restarting transaction; nested exception is java.sql.SQLTransactionRollbackException: (conn=109) Deadlock found when trying to get lock; try restarting transaction
Caused by: org.springframework.dao.DeadlockLoserDataAccessException: PreparedStatementCallback; SQL [DELETE FROM DUIC_SERVER WHERE ACTIVE_AT<=?(conn=109) Deadlock found when trying to get lock; try restarting transaction; nested exception is java.sql.SQLTransactionRollbackException: (conn=109) Deadlock found when trying to get lock; try restarting transaction
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:266)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1402)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:620)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:850)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:871)
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:317)
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:322)
at io.zhudy.duic.repository.impl.MySQLServerRepository$clean$1$n$1.doInTransaction(MySQLServerRepository.kt:93)
at io.zhudy.duic.repository.impl.MySQLServerRepository$clean$1$n$1.doInTransaction(MySQLServerRepository.kt:33)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
at io.zhudy.duic.repository.impl.MySQLServerRepository$clean$1.accept(MySQLServerRepository.kt:92)
at io.zhudy.duic.repository.impl.MySQLServerRepository$clean$1.accept(MySQLServerRepository.kt:33)
at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:54)
at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:76)
at reactor.core.publisher.Mono.subscribe(Mono.java:3080)
at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:123)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Assembly trace from producer [reactor.core.publisher.MonoCreate] :
reactor.core.publisher.Mono.create(Mono.java:172)
io.zhudy.duic.repository.impl.MySQLServerRepository.clean(MySQLServerRepository.kt:91)
io.zhudy.duic.service.ServerService.clockPing(ServerService.kt:77)
org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84)
org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
Error has been observed by the following operator(s):
|_ Mono.create(MySQLServerRepository.kt:91)
|_ Mono.subscribeOn(ServerService.kt:78)

Caused by: java.sql.SQLTransactionRollbackException: (conn=109) Deadlock found when trying to get lock; try restarting transaction
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:179)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:110)
at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:228)
at org.mariadb.jdbc.MariaDbPreparedStatementServer.executeInternal(MariaDbPreparedStatementServer.java:382)
at org.mariadb.jdbc.MariaDbPreparedStatementServer.execute(MariaDbPreparedStatementServer.java:344)
at org.mariadb.jdbc.MariaDbPreparedStatementServer.executeUpdate(MariaDbPreparedStatementServer.java:331)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at org.springframework.jdbc.core.JdbcTemplate.lambda$update$0(JdbcTemplate.java:855)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:605)
... 21 common frames omitted
Caused by: java.sql.SQLException: Deadlock found when trying to get lock; try restarting transaction
Query is: DELETE FROM DUIC_SERVER WHERE ACTIVE_AT<=?, parameters ['2019-02-16 16:25:53.725']
at org.mariadb.jdbc.internal.util.LogQueryTool.exceptionWithQuery(LogQueryTool.java:153)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executePreparedQuery(AbstractQueryProtocol.java:971)
at org.mariadb.jdbc.MariaDbPreparedStatementServer.executeInternal(MariaDbPreparedStatementServer.java:376)
... 27 common frames omitted

停止服务出错

2019-06-05 14:39:12,479 INFO  o.s.s.c.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
2019-06-05 14:39:12,482 INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated...
2019-06-05 14:39:12,485 INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed.
2019-06-05 14:39:12,497 ERROR io.zhudy.duic.service.ServerService - unregister 服务失败: iZbp1at0lkg7mhjwao6zwzZ:7777
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: HikariDataSource HikariDataSource 
(HikariPool-1) has been closed.
        at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:305)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378)
        at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:137)
        at io.zhudy.duic.repository.impl.MySQLServerRepository$register$1.accept(MySQLServerRepository.kt:41)
        at io.zhudy.duic.repository.impl.MySQLServerRepository$register$1.accept(MySQLServerRepository.kt:34)
        at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:53)
        at reactor.core.publisher.MonoOnAssembly.subscribe(MonoOnAssembly.java:61)
        at reactor.core.publisher.Mono.subscribe(Mono.java:3694)
        at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:123)
        at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
        at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
        Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Assembly trace from producer [reactor.core.publisher.MonoCreate] :
        reactor.core.publisher.Mono.create(Mono.java:183)
        io.zhudy.duic.repository.impl.MySQLServerRepository.register(MySQLServerRepository.kt:40)
Error has been observed by the following operator(s):
        |_      Mono.create ⇢ io.zhudy.duic.repository.impl.MySQLServerRepository.register(MySQLServerRepository.kt:40)
        |_      Mono.subscribeOn ⇢ io.zhudy.duic.repository.impl.MySQLServerRepository.register(MySQLServerRepository.kt:52)

Caused by: java.sql.SQLException: HikariDataSource HikariDataSource (HikariPool-1) has been closed.
        at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:96)
        at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:262)
        ... 16 common frames omitted

启动配置增加固定目录支持

启动配置增加默认扫描 /etc/duic 目录中的配置文件。

目前启动配置扫描的配置在工作目录下的 config 在不同的目录下启动 duic 时需要用户手动设置 user.dir 造成不必要的困扰。现提供固定的配置目录扫描,降低部署的成本,提高应用统一性。

服务启动报错

第一次启动自动创建表之后,由于我的mysql数据库是InnoDB,不支持FULLTEXT,所以手动将 DUIC_APP表的引擎改成了MyISAM,再次启动服务时就报以下错误说表DUIC_APP已存在,已存在难道就不能再启动?

Reason: liquibase.exception.DatabaseException: (conn=139828) Table 'DUIC_APP' already exists [Failed SQL: CREATE TABLE configcenter.DUIC_APP (ID INT AUTO_INCREMENT NOT NULL, NAME VARCHAR(64) NOT NULL COMMENT '应用名称', PROFILE VARCHAR(64) NOT NULL COMMENT '应用环境', DESCRIPTION VARCHAR(1024) NOT NULL COMMENT '应用描述', TOKEN VARCHAR(64) NULL COMMENT '访问令牌', IP_LIMIT VARCHAR(1024) NULL COMMENT '可访问 IP', V INT NOT NULL COMMENT '应用版本', CREATED_AT timestamp NULL COMMENT '创建时间', UPDATED_AT timestamp NULL COMMENT '修改时间', CONTENT LONGTEXT NULL COMMENT '应用配置内容', USERS VARCHAR(1024) NULL COMMENT '应用所属用户', CONSTRAINT PK_DUIC_APP PRIMARY KEY (ID))]
at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.onRefresh(ReactiveWebServerApplicationContext.java:76)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544)
at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:61)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:398)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:330)
at io.zhudy.duic.server.Application$Companion.main(Application.kt:67)
at io.zhudy.duic.server.Application.main(Application.kt)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)

区分开发、测试、正式环境

一点建议,dev级别支持克隆:
-- 应用
|
-- dev(令牌)[config1,config2...]
|
--test(令牌)[config1,config2...]
|
--online(令牌)[config1,config2...]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.