截图工具

This commit is contained in:
wangliwen 2022-11-24 17:42:21 +08:00
parent dfb2a69954
commit ebb61c87f0
11 changed files with 298 additions and 585 deletions

Binary file not shown.

View File

@ -1,85 +0,0 @@
2022-11-18 16:16:18,193 ERROR [io.vertx.core.impl.ContextBase]-[vert.x-eventloop-thread-1] Unhandled exception
org.jetbrains.exposed.exceptions.ExposedSQLException: java.sql.SQLException: Query returns results
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:64) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:140) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:126) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:108) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:94) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec$default(Transaction.kt:93) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.execStatements(SchemaUtils.kt:251) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.createMissingTablesAndColumns(SchemaUtils.kt:321) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.createMissingTablesAndColumns$default(SchemaUtils.kt:306) ~[exposed-core-0.40.1.jar:?]
at com.hisense.dahua_video.MainVerticle$exposed$1.invoke(MainVerticle.kt:160) ~[classes/:?]
at com.hisense.dahua_video.MainVerticle$exposed$1.invoke(MainVerticle.kt:157) ~[classes/:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction$run(ThreadLocalTransactionManager.kt:214) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.access$inTopLevelTransaction$run(ThreadLocalTransactionManager.kt:1) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$1.invoke(ThreadLocalTransactionManager.kt:240) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:248) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction(ThreadLocalTransactionManager.kt:239) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$transaction$1.invoke(ThreadLocalTransactionManager.kt:189) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:248) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:159) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:146) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction$default(ThreadLocalTransactionManager.kt:145) ~[exposed-core-0.40.1.jar:?]
at com.hisense.dahua_video.MainVerticle.exposed(MainVerticle.kt:157) ~[classes/:?]
at com.hisense.dahua_video.MainVerticle.start$lambda$4(MainVerticle.kt:51) ~[classes/:?]
at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$ListenerArray.onSuccess(FutureImpl.java:262) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Mapping.onSuccess(Mapping.java:40) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Mapping.onSuccess(Mapping.java:40) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.CompositeFutureImpl.trySucceed(CompositeFutureImpl.java:163) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.CompositeFutureImpl.lambda$all$0(CompositeFutureImpl.java:38) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition$1.onSuccess(Composition.java:62) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.SucceededFuture.addListener(SucceededFuture.java:88) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition.onSuccess(Composition.java:43) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition$1.onSuccess(Composition.java:62) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.addListener(FutureImpl.java:196) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.PromiseImpl.addListener(PromiseImpl.java:23) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition.onSuccess(Composition.java:43) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$ListenerArray.onSuccess(FutureImpl.java:262) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.lambda$emitSuccess$0(FutureBase.java:54) ~[vertx-core-4.3.4.jar:4.3.4]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.sql.SQLException: Query returns results
at org.sqlite.jdbc3.JDBC3PreparedStatement.executeLargeUpdate(JDBC3PreparedStatement.java:106) ~[sqlite-jdbc-3.39.4.0.jar:?]
at org.sqlite.jdbc3.JDBC3PreparedStatement.executeUpdate(JDBC3PreparedStatement.java:98) ~[sqlite-jdbc-3.39.4.0.jar:?]
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-4.0.3.jar:?]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar:?]
at org.jetbrains.exposed.sql.statements.jdbc.JdbcPreparedStatementImpl.executeUpdate(JdbcPreparedStatementImpl.kt:26) ~[exposed-jdbc-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction$exec$2.executeInternal(Transaction.kt:113) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:62) ~[exposed-core-0.40.1.jar:?]
... 58 more
2022-11-18 16:17:57,609 ERROR [com.hisense.dahua_video.util.MonitorSessionUtil]-[vert.x-eventloop-thread-17] 创建会话失败
io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection timed out: no further information: /10.132.191.3:8314
Caused by: java.net.ConnectException: Connection timed out: no further information
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:?]
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:779) ~[?:?]
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at java.lang.Thread.run(Thread.java:834) [?:?]

View File

@ -1,369 +0,0 @@
2022-11-18 16:16:16,528 INFO [com.hisense.dahua_video.MainVerticle]-[vert.x-eventloop-thread-1] 开始创表2022-11-18T16:16:16.527701600
2022-11-18 16:16:16,582 INFO [com.zaxxer.hikari.HikariDataSource]-[vert.x-eventloop-thread-1] HikariPool-1 - Starting...
2022-11-18 16:16:17,993 INFO [com.zaxxer.hikari.HikariDataSource]-[vert.x-eventloop-thread-1] HikariPool-1 - Start completed.
2022-11-18 16:16:18,055 INFO [com.hisense.dahua_video.MainVerticle]-[vert.x-eventloop-thread-1] 连接完成2022-11-18T16:16:18.055891600
2022-11-18 16:16:18,155 INFO [Exposed]-[vert.x-eventloop-thread-1] Preparing create tables statements took 1ms
2022-11-18 16:16:18,155 INFO [Exposed]-[vert.x-eventloop-thread-1] Executing create tables statements took 0ms
2022-11-18 16:16:18,161 INFO [Exposed]-[vert.x-eventloop-thread-1] Extracting table columns took 5ms
2022-11-18 16:16:18,166 INFO [Exposed]-[vert.x-eventloop-thread-1] Preparing alter table statements took 10ms
2022-11-18 16:16:18,173 WARN [Exposed]-[vert.x-eventloop-thread-1] Transaction attempt #0 failed: java.sql.SQLException: Query returns results. Statement(s): ALTER TABLE sys_device ADD device_id TEXT NOT NULL
org.jetbrains.exposed.exceptions.ExposedSQLException: java.sql.SQLException: Query returns results
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:64) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:140) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:126) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:108) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:94) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec$default(Transaction.kt:93) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.execStatements(SchemaUtils.kt:251) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.createMissingTablesAndColumns(SchemaUtils.kt:321) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.createMissingTablesAndColumns$default(SchemaUtils.kt:306) ~[exposed-core-0.40.1.jar:?]
at com.hisense.dahua_video.MainVerticle$exposed$1.invoke(MainVerticle.kt:160) ~[classes/:?]
at com.hisense.dahua_video.MainVerticle$exposed$1.invoke(MainVerticle.kt:157) ~[classes/:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction$run(ThreadLocalTransactionManager.kt:214) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.access$inTopLevelTransaction$run(ThreadLocalTransactionManager.kt:1) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$1.invoke(ThreadLocalTransactionManager.kt:240) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:248) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction(ThreadLocalTransactionManager.kt:239) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$transaction$1.invoke(ThreadLocalTransactionManager.kt:189) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:248) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:159) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:146) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction$default(ThreadLocalTransactionManager.kt:145) ~[exposed-core-0.40.1.jar:?]
at com.hisense.dahua_video.MainVerticle.exposed(MainVerticle.kt:157) ~[classes/:?]
at com.hisense.dahua_video.MainVerticle.start$lambda$4(MainVerticle.kt:51) ~[classes/:?]
at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$ListenerArray.onSuccess(FutureImpl.java:262) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Mapping.onSuccess(Mapping.java:40) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Mapping.onSuccess(Mapping.java:40) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.CompositeFutureImpl.trySucceed(CompositeFutureImpl.java:163) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.CompositeFutureImpl.lambda$all$0(CompositeFutureImpl.java:38) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition$1.onSuccess(Composition.java:62) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.SucceededFuture.addListener(SucceededFuture.java:88) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition.onSuccess(Composition.java:43) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition$1.onSuccess(Composition.java:62) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.addListener(FutureImpl.java:196) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.PromiseImpl.addListener(PromiseImpl.java:23) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition.onSuccess(Composition.java:43) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$ListenerArray.onSuccess(FutureImpl.java:262) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.lambda$emitSuccess$0(FutureBase.java:54) ~[vertx-core-4.3.4.jar:4.3.4]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.sql.SQLException: Query returns results
at org.sqlite.jdbc3.JDBC3PreparedStatement.executeLargeUpdate(JDBC3PreparedStatement.java:106) ~[sqlite-jdbc-3.39.4.0.jar:?]
at org.sqlite.jdbc3.JDBC3PreparedStatement.executeUpdate(JDBC3PreparedStatement.java:98) ~[sqlite-jdbc-3.39.4.0.jar:?]
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-4.0.3.jar:?]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar:?]
at org.jetbrains.exposed.sql.statements.jdbc.JdbcPreparedStatementImpl.executeUpdate(JdbcPreparedStatementImpl.kt:26) ~[exposed-jdbc-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction$exec$2.executeInternal(Transaction.kt:113) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:62) ~[exposed-core-0.40.1.jar:?]
... 58 more
2022-11-18 16:16:18,185 INFO [Exposed]-[vert.x-eventloop-thread-1] Preparing create tables statements took 0ms
2022-11-18 16:16:18,185 INFO [Exposed]-[vert.x-eventloop-thread-1] Executing create tables statements took 0ms
2022-11-18 16:16:18,187 INFO [Exposed]-[vert.x-eventloop-thread-1] Extracting table columns took 2ms
2022-11-18 16:16:18,188 INFO [Exposed]-[vert.x-eventloop-thread-1] Preparing alter table statements took 3ms
2022-11-18 16:16:18,188 WARN [Exposed]-[vert.x-eventloop-thread-1] Transaction attempt #1 failed: java.sql.SQLException: Query returns results. Statement(s): ALTER TABLE sys_device ADD device_id TEXT NOT NULL
org.jetbrains.exposed.exceptions.ExposedSQLException: java.sql.SQLException: Query returns results
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:64) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:140) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:126) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:108) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:94) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec$default(Transaction.kt:93) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.execStatements(SchemaUtils.kt:251) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.createMissingTablesAndColumns(SchemaUtils.kt:321) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.createMissingTablesAndColumns$default(SchemaUtils.kt:306) ~[exposed-core-0.40.1.jar:?]
at com.hisense.dahua_video.MainVerticle$exposed$1.invoke(MainVerticle.kt:160) ~[classes/:?]
at com.hisense.dahua_video.MainVerticle$exposed$1.invoke(MainVerticle.kt:157) ~[classes/:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction$run(ThreadLocalTransactionManager.kt:214) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.access$inTopLevelTransaction$run(ThreadLocalTransactionManager.kt:1) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$1.invoke(ThreadLocalTransactionManager.kt:240) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:248) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction(ThreadLocalTransactionManager.kt:239) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$transaction$1.invoke(ThreadLocalTransactionManager.kt:189) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:248) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:159) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:146) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction$default(ThreadLocalTransactionManager.kt:145) ~[exposed-core-0.40.1.jar:?]
at com.hisense.dahua_video.MainVerticle.exposed(MainVerticle.kt:157) ~[classes/:?]
at com.hisense.dahua_video.MainVerticle.start$lambda$4(MainVerticle.kt:51) ~[classes/:?]
at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$ListenerArray.onSuccess(FutureImpl.java:262) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Mapping.onSuccess(Mapping.java:40) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Mapping.onSuccess(Mapping.java:40) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.CompositeFutureImpl.trySucceed(CompositeFutureImpl.java:163) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.CompositeFutureImpl.lambda$all$0(CompositeFutureImpl.java:38) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition$1.onSuccess(Composition.java:62) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.SucceededFuture.addListener(SucceededFuture.java:88) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition.onSuccess(Composition.java:43) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition$1.onSuccess(Composition.java:62) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.addListener(FutureImpl.java:196) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.PromiseImpl.addListener(PromiseImpl.java:23) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition.onSuccess(Composition.java:43) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$ListenerArray.onSuccess(FutureImpl.java:262) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.lambda$emitSuccess$0(FutureBase.java:54) ~[vertx-core-4.3.4.jar:4.3.4]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.sql.SQLException: Query returns results
at org.sqlite.jdbc3.JDBC3PreparedStatement.executeLargeUpdate(JDBC3PreparedStatement.java:106) ~[sqlite-jdbc-3.39.4.0.jar:?]
at org.sqlite.jdbc3.JDBC3PreparedStatement.executeUpdate(JDBC3PreparedStatement.java:98) ~[sqlite-jdbc-3.39.4.0.jar:?]
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-4.0.3.jar:?]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar:?]
at org.jetbrains.exposed.sql.statements.jdbc.JdbcPreparedStatementImpl.executeUpdate(JdbcPreparedStatementImpl.kt:26) ~[exposed-jdbc-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction$exec$2.executeInternal(Transaction.kt:113) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:62) ~[exposed-core-0.40.1.jar:?]
... 58 more
2022-11-18 16:16:18,190 INFO [Exposed]-[vert.x-eventloop-thread-1] Preparing create tables statements took 1ms
2022-11-18 16:16:18,190 INFO [Exposed]-[vert.x-eventloop-thread-1] Executing create tables statements took 0ms
2022-11-18 16:16:18,192 INFO [Exposed]-[vert.x-eventloop-thread-1] Extracting table columns took 2ms
2022-11-18 16:16:18,192 INFO [Exposed]-[vert.x-eventloop-thread-1] Preparing alter table statements took 2ms
2022-11-18 16:16:18,192 WARN [Exposed]-[vert.x-eventloop-thread-1] Transaction attempt #2 failed: java.sql.SQLException: Query returns results. Statement(s): ALTER TABLE sys_device ADD device_id TEXT NOT NULL
org.jetbrains.exposed.exceptions.ExposedSQLException: java.sql.SQLException: Query returns results
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:64) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:140) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:126) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:108) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:94) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec$default(Transaction.kt:93) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.execStatements(SchemaUtils.kt:251) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.createMissingTablesAndColumns(SchemaUtils.kt:321) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.createMissingTablesAndColumns$default(SchemaUtils.kt:306) ~[exposed-core-0.40.1.jar:?]
at com.hisense.dahua_video.MainVerticle$exposed$1.invoke(MainVerticle.kt:160) ~[classes/:?]
at com.hisense.dahua_video.MainVerticle$exposed$1.invoke(MainVerticle.kt:157) ~[classes/:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction$run(ThreadLocalTransactionManager.kt:214) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.access$inTopLevelTransaction$run(ThreadLocalTransactionManager.kt:1) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$1.invoke(ThreadLocalTransactionManager.kt:240) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:248) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction(ThreadLocalTransactionManager.kt:239) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$transaction$1.invoke(ThreadLocalTransactionManager.kt:189) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:248) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:159) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:146) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction$default(ThreadLocalTransactionManager.kt:145) ~[exposed-core-0.40.1.jar:?]
at com.hisense.dahua_video.MainVerticle.exposed(MainVerticle.kt:157) ~[classes/:?]
at com.hisense.dahua_video.MainVerticle.start$lambda$4(MainVerticle.kt:51) ~[classes/:?]
at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$ListenerArray.onSuccess(FutureImpl.java:262) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Mapping.onSuccess(Mapping.java:40) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Mapping.onSuccess(Mapping.java:40) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.CompositeFutureImpl.trySucceed(CompositeFutureImpl.java:163) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.CompositeFutureImpl.lambda$all$0(CompositeFutureImpl.java:38) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition$1.onSuccess(Composition.java:62) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.SucceededFuture.addListener(SucceededFuture.java:88) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition.onSuccess(Composition.java:43) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition$1.onSuccess(Composition.java:62) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.addListener(FutureImpl.java:196) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.PromiseImpl.addListener(PromiseImpl.java:23) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition.onSuccess(Composition.java:43) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$ListenerArray.onSuccess(FutureImpl.java:262) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.lambda$emitSuccess$0(FutureBase.java:54) ~[vertx-core-4.3.4.jar:4.3.4]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.sql.SQLException: Query returns results
at org.sqlite.jdbc3.JDBC3PreparedStatement.executeLargeUpdate(JDBC3PreparedStatement.java:106) ~[sqlite-jdbc-3.39.4.0.jar:?]
at org.sqlite.jdbc3.JDBC3PreparedStatement.executeUpdate(JDBC3PreparedStatement.java:98) ~[sqlite-jdbc-3.39.4.0.jar:?]
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-4.0.3.jar:?]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar:?]
at org.jetbrains.exposed.sql.statements.jdbc.JdbcPreparedStatementImpl.executeUpdate(JdbcPreparedStatementImpl.kt:26) ~[exposed-jdbc-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction$exec$2.executeInternal(Transaction.kt:113) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:62) ~[exposed-core-0.40.1.jar:?]
... 58 more
2022-11-18 16:16:18,193 ERROR [io.vertx.core.impl.ContextBase]-[vert.x-eventloop-thread-1] Unhandled exception
org.jetbrains.exposed.exceptions.ExposedSQLException: java.sql.SQLException: Query returns results
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:64) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:140) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:126) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:108) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:94) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec$default(Transaction.kt:93) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.execStatements(SchemaUtils.kt:251) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.createMissingTablesAndColumns(SchemaUtils.kt:321) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.SchemaUtils.createMissingTablesAndColumns$default(SchemaUtils.kt:306) ~[exposed-core-0.40.1.jar:?]
at com.hisense.dahua_video.MainVerticle$exposed$1.invoke(MainVerticle.kt:160) ~[classes/:?]
at com.hisense.dahua_video.MainVerticle$exposed$1.invoke(MainVerticle.kt:157) ~[classes/:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction$run(ThreadLocalTransactionManager.kt:214) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.access$inTopLevelTransaction$run(ThreadLocalTransactionManager.kt:1) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$1.invoke(ThreadLocalTransactionManager.kt:240) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:248) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction(ThreadLocalTransactionManager.kt:239) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$transaction$1.invoke(ThreadLocalTransactionManager.kt:189) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:248) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:159) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:146) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction$default(ThreadLocalTransactionManager.kt:145) ~[exposed-core-0.40.1.jar:?]
at com.hisense.dahua_video.MainVerticle.exposed(MainVerticle.kt:157) ~[classes/:?]
at com.hisense.dahua_video.MainVerticle.start$lambda$4(MainVerticle.kt:51) ~[classes/:?]
at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$ListenerArray.onSuccess(FutureImpl.java:262) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Mapping.onSuccess(Mapping.java:40) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Mapping.onSuccess(Mapping.java:40) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.CompositeFutureImpl.trySucceed(CompositeFutureImpl.java:163) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.CompositeFutureImpl.lambda$all$0(CompositeFutureImpl.java:38) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition$1.onSuccess(Composition.java:62) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.SucceededFuture.addListener(SucceededFuture.java:88) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition.onSuccess(Composition.java:43) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition$1.onSuccess(Composition.java:62) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl.addListener(FutureImpl.java:196) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.PromiseImpl.addListener(PromiseImpl.java:23) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.Composition.onSuccess(Composition.java:43) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureImpl$ListenerArray.onSuccess(FutureImpl.java:262) ~[vertx-core-4.3.4.jar:4.3.4]
at io.vertx.core.impl.future.FutureBase.lambda$emitSuccess$0(FutureBase.java:54) ~[vertx-core-4.3.4.jar:4.3.4]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.sql.SQLException: Query returns results
at org.sqlite.jdbc3.JDBC3PreparedStatement.executeLargeUpdate(JDBC3PreparedStatement.java:106) ~[sqlite-jdbc-3.39.4.0.jar:?]
at org.sqlite.jdbc3.JDBC3PreparedStatement.executeUpdate(JDBC3PreparedStatement.java:98) ~[sqlite-jdbc-3.39.4.0.jar:?]
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-4.0.3.jar:?]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar:?]
at org.jetbrains.exposed.sql.statements.jdbc.JdbcPreparedStatementImpl.executeUpdate(JdbcPreparedStatementImpl.kt:26) ~[exposed-jdbc-0.40.1.jar:?]
at org.jetbrains.exposed.sql.Transaction$exec$2.executeInternal(Transaction.kt:113) ~[exposed-core-0.40.1.jar:?]
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:62) ~[exposed-core-0.40.1.jar:?]
... 58 more
2022-11-18 16:17:33,061 INFO [com.hisense.dahua_video.MainVerticle]-[vert.x-eventloop-thread-1] 开始创表2022-11-18T16:17:33.055055800
2022-11-18 16:17:33,109 INFO [com.zaxxer.hikari.HikariDataSource]-[vert.x-eventloop-thread-1] HikariPool-1 - Starting...
2022-11-18 16:17:33,610 INFO [com.zaxxer.hikari.HikariDataSource]-[vert.x-eventloop-thread-1] HikariPool-1 - Start completed.
2022-11-18 16:17:33,692 INFO [com.hisense.dahua_video.MainVerticle]-[vert.x-eventloop-thread-1] 连接完成2022-11-18T16:17:33.690195600
2022-11-18 16:17:34,603 INFO [Exposed]-[vert.x-eventloop-thread-1] Preparing create tables statements took 0ms
2022-11-18 16:17:34,603 INFO [Exposed]-[vert.x-eventloop-thread-1] Executing create tables statements took 0ms
2022-11-18 16:17:34,618 INFO [Exposed]-[vert.x-eventloop-thread-1] Extracting table columns took 14ms
2022-11-18 16:17:34,618 INFO [Exposed]-[vert.x-eventloop-thread-1] Preparing alter table statements took 15ms
2022-11-18 16:17:34,618 INFO [Exposed]-[vert.x-eventloop-thread-1] Executing alter table statements took 0ms
2022-11-18 16:17:34,665 WARN [io.vertx.core.impl.BlockedThreadChecker]-[vertx-blocked-thread-checker] Thread Thread[vert.x-eventloop-thread-1,5,main] has been blocked for 2528 ms, time limit is 2000 ms
2022-11-18 16:17:34,666 INFO [Exposed]-[vert.x-eventloop-thread-1] Index on table 'sys_monitor_user' differs only in name: in db sys_monitor_user_userName -> in mapping sys_monitor_user_userName_unique
2022-11-18 16:17:34,681 INFO [Exposed]-[vert.x-eventloop-thread-1] Index on table 'sys_user' differs only in name: in db sys_user_userName -> in mapping sys_user_userName_unique
2022-11-18 16:17:34,681 INFO [Exposed]-[vert.x-eventloop-thread-1] Index on table 'sys_organization' differs only in name: in db sys_organization_org_id -> in mapping sys_organization_org_id_unique
2022-11-18 16:17:34,682 INFO [Exposed]-[vert.x-eventloop-thread-1] Checking mapping consistence took 63ms
2022-11-18 16:17:34,682 INFO [com.hisense.dahua_video.MainVerticle]-[vert.x-eventloop-thread-1] 创表成功2022-11-18T16:17:34.682274800
2022-11-18 16:17:34,740 WARN [io.vertx.core.impl.VertxImpl]-[vert.x-eventloop-thread-1] You're already on a Vert.x context, are you sure you want to create a new Vertx instance?
2022-11-18 16:17:34,778 INFO [com.hisense.dahua_video.MainVerticle]-[vert.x-eventloop-thread-1] 无集群配置,进行单节点部署!
2022-11-18 16:17:34,779 INFO [com.hisense.dahua_video.MainVerticle]-[vert.x-eventloop-thread-1] vertx.isNativeTransportEnabled:false
2022-11-18 16:17:34,779 INFO [com.hisense.dahua_video.MainVerticle]-[vert.x-eventloop-thread-1] 截图根目录:/mnts/record/\
2022-11-18 16:17:35,219 INFO [com.hisense.dahua_video.verticle.MonitorVerticle]-[vert.x-eventloop-thread-17] monitorSessionUtil 创建成功!
2022-11-18 16:17:35,220 INFO [com.hisense.dahua_video.MainVerticle]-[vert.x-eventloop-thread-31] 部署 MonitorVerticle 成功!
2022-11-18 16:17:35,220 INFO [com.hisense.dahua_video.MainVerticle]-[vert.x-eventloop-thread-31] 部署 OrganizationVerticle 成功!
2022-11-18 16:17:35,328 INFO [com.hisense.dahua_video.MainVerticle]-[vert.x-eventloop-thread-31] 部署 SqlFactoryVerticle 成功!
2022-11-18 16:17:35,682 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-10] http 服务监听端口: 8883
2022-11-18 16:17:35,716 INFO [com.hisense.dahua_video.util.MonitorSessionUtil]-[vert.x-eventloop-thread-17] authorize:{"userName":"ynszdz","password":"Admin@123","monitorDomain":"http://10.132.191.3:8314","id":1}
2022-11-18 16:17:35,720 INFO [com.hisense.dahua_video.util.MonitorSessionUtil]-[vert.x-eventloop-thread-17] domain: 10.132.191.3 port:8314
2022-11-18 16:17:36,659 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-10] 开放管理员后台
2022-11-18 16:17:36,660 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-13] http 服务监听端口: 8883
2022-11-18 16:17:36,661 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-4] http 服务监听端口: 8883
2022-11-18 16:17:36,661 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-14] http 服务监听端口: 8883
2022-11-18 16:17:36,661 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-8] http 服务监听端口: 8883
2022-11-18 16:17:36,661 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-2] http 服务监听端口: 8883
2022-11-18 16:17:36,661 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-7] http 服务监听端口: 8883
2022-11-18 16:17:36,662 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-6] http 服务监听端口: 8883
2022-11-18 16:17:36,662 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-5] http 服务监听端口: 8883
2022-11-18 16:17:36,662 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-15] http 服务监听端口: 8883
2022-11-18 16:17:36,662 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-3] http 服务监听端口: 8883
2022-11-18 16:17:36,663 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-11] http 服务监听端口: 8883
2022-11-18 16:17:36,662 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-0] http 服务监听端口: 8883
2022-11-18 16:17:36,663 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-9] http 服务监听端口: 8883
2022-11-18 16:17:36,663 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-1] http 服务监听端口: 8883
2022-11-18 16:17:36,664 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-4] 开放管理员后台
2022-11-18 16:17:36,664 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-14] 开放管理员后台
2022-11-18 16:17:36,664 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-13] 开放管理员后台
2022-11-18 16:17:36,664 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-7] 开放管理员后台
2022-11-18 16:17:36,664 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-5] 开放管理员后台
2022-11-18 16:17:36,664 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-2] 开放管理员后台
2022-11-18 16:17:36,664 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-15] 开放管理员后台
2022-11-18 16:17:36,664 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-3] 开放管理员后台
2022-11-18 16:17:36,664 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-0] 开放管理员后台
2022-11-18 16:17:36,664 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-12] http 服务监听端口: 8883
2022-11-18 16:17:36,665 INFO [com.hisense.dahua_video.MainVerticle]-[vert.x-eventloop-thread-31] 部署 WebAPIVerticle 成功!
2022-11-18 16:17:36,665 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-8] 开放管理员后台
2022-11-18 16:17:36,665 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-11] 开放管理员后台
2022-11-18 16:17:36,665 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-6] 开放管理员后台
2022-11-18 16:17:36,665 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-1] 开放管理员后台
2022-11-18 16:17:36,665 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-9] 开放管理员后台
2022-11-18 16:17:36,665 INFO [com.hisense.dahua_video.verticle.WebAPIVerticle]-[vert.x-eventloop-thread-12] 开放管理员后台
2022-11-18 16:17:57,609 ERROR [com.hisense.dahua_video.util.MonitorSessionUtil]-[vert.x-eventloop-thread-17] 创建会话失败
io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection timed out: no further information: /10.132.191.3:8314
Caused by: java.net.ConnectException: Connection timed out: no further information
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:?]
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:779) ~[?:?]
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) [netty-transport-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.82.Final.jar:4.1.82.Final]
at java.lang.Thread.run(Thread.java:834) [?:?]

View File

@ -78,6 +78,11 @@ enum class EventBusAddress(val address: String) {
/** /**
* 通道截图 * 通道截图
*/ */
SYS_DEVICE_CHANNEL_SCREENSHOT("MSG://EVENT/BUS/SQL/SYS/SYS_DEVICE_CHANNEL_SCREENSHOT") SYS_DEVICE_CHANNEL_SCREENSHOT("MSG://EVENT/BUS/SQL/SYS/SYS_DEVICE_CHANNEL_SCREENSHOT"),
/**
* 获取在线设备通道
*/
SYS_DEVICE_CHANNEL_ONLINE("MSG://EVENT/BUS/SQL/SYS/SYS_DEVICE_CHANNEL_ONLINE")
} }

View File

@ -28,6 +28,7 @@ class DeviceChannelDao(
init { init {
this.event = event_ this.event = event_
saveOrUpdateDeviceChannel() saveOrUpdateDeviceChannel()
getAllOnLineChannel()
} }
@ -156,4 +157,46 @@ class DeviceChannelDao(
} }
} }
/**
* 获取所有在线的可预览设备通道
*/
private fun getAllOnLineChannel() {
event!!.consumer<JsonObject>(EventBusAddress.SYS_DEVICE_CHANNEL_ONLINE.address)?.handler { res ->
val message = res.body()
val userId = message.getInteger("id")
val sql = """
SELECT
sys_device_channel.channel_no,
sys_device.device_name
FROM
sys_device_channel
LEFT JOIN sys_device ON sys_device.id = sys_device_channel.device_id
LEFT JOIN sys_organization ON sys_organization.id = sys_device.organization_id
LEFT JOIN sys_monitor_user ON sys_organization.monitor_user_id = sys_monitor_user.id
WHERE
sys_device_channel.sub_type = 2
AND sys_device_channel.online = 1
AND sys_monitor_user.id = $userId
ORDER BY
sys_device.sort ASC;
""".trimIndent()
val value = transaction {
val temp = JsonArray()
exec(sql) { res ->
while (res.next()) {
temp.add(
JsonObject()
.put("channel_no", res.getString("channel_no"))
.put("device_name", res.getString("device_name"))
)
}
}
temp
}
logger.info("有效设备通道数量:" + value.size())
res.reply(value)
}
}
} }

View File

@ -5,6 +5,7 @@ import com.hisense.dahua_video.consts.EventBusAddress
import com.hisense.dahua_video.modules.device.Device import com.hisense.dahua_video.modules.device.Device
import com.hisense.dahua_video.modules.device.Organization import com.hisense.dahua_video.modules.device.Organization
import com.hisense.dahua_video.util.DevicesManagerUtil import com.hisense.dahua_video.util.DevicesManagerUtil
import com.hisense.dahua_video.util.ScreenshotUtil
import io.vertx.core.Vertx import io.vertx.core.Vertx
import io.vertx.core.eventbus.EventBus import io.vertx.core.eventbus.EventBus
import io.vertx.core.impl.logging.Logger import io.vertx.core.impl.logging.Logger
@ -24,6 +25,7 @@ class DeviceDao(
private var event: EventBus? = null private var event: EventBus? = null
private val organization = Organization() private val organization = Organization()
private var devicesManagerUtil: DevicesManagerUtil? = null private var devicesManagerUtil: DevicesManagerUtil? = null
private var screenshotUtil: ScreenshotUtil? = null
private val device = Device() private val device = Device()
private var vertx: Vertx? = null private var vertx: Vertx? = null
@ -31,7 +33,12 @@ class DeviceDao(
this.event = event_ this.event = event_
this.vertx = vertx this.vertx = vertx
devicesManagerUtil = DevicesManagerUtil(vertx) devicesManagerUtil = DevicesManagerUtil(vertx)
screenshotUtil = ScreenshotUtil(vertx)
saveOrupdateDevice() saveOrupdateDevice()
// vertx.setTimer(30000) {
// screenshotUtil!!.allDeviceChannel()
// }
} }

View File

@ -75,7 +75,7 @@ class OrganizationDao(event_: EventBus?, vertx: Vertx) {
this[organization.parentNodeType] = organization_.getInteger("parentNodeType") this[organization.parentNodeType] = organization_.getInteger("parentNodeType")
} }
} }
if (!message.isEmpty) { // 存在数据时才进行同步
vertx!!.setTimer(3000) { vertx!!.setTimer(3000) {
event!!.request<JsonArray>(EventBusAddress.SYS_MONITOR_USER_ALLMONITORUSER_TOKEN.address, JsonObject()) { event!!.request<JsonArray>(EventBusAddress.SYS_MONITOR_USER_ALLMONITORUSER_TOKEN.address, JsonObject()) {
if (it.succeeded()) { if (it.succeeded()) {
@ -98,6 +98,7 @@ class OrganizationDao(event_: EventBus?, vertx: Vertx) {
} }
} }
} }
}
} }

View File

@ -10,14 +10,9 @@ import io.vertx.ext.web.client.WebClient
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.bytedeco.javacv.FFmpegFrameGrabber
import org.bytedeco.javacv.Java2DFrameConverter
import java.io.File import java.io.File
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.util.concurrent.atomic.AtomicInteger import java.util.concurrent.atomic.AtomicInteger
import java.util.stream.Collectors import java.util.stream.Collectors
import javax.imageio.ImageIO
/** /**
@ -39,7 +34,6 @@ class DevicesManagerUtil(vertx: Vertx) {
record = record =
vertx.orCreateContext.config().getString("recroot", System.getProperty("user.dir") + File.separator + "record") vertx.orCreateContext.config().getString("recroot", System.getProperty("user.dir") + File.separator + "record")
realmonitorUrl() realmonitorUrl()
screenshot()
} }
@ -281,88 +275,4 @@ class DevicesManagerUtil(vertx: Vertx) {
} }
} }
/**
* 截图通道画面
*/
private fun screenshot() {
/**
* 执行截图
*/
fun screenshotAction(screenshot: JsonObject): JsonObject {
val url = screenshot.getString("url")
logger.info("抓取url:$url")
val result = JsonObject()
result.put("startTime", LocalDateTime.now().toString())
GlobalScope.launch(Dispatchers.IO) {
val grabber = FFmpegFrameGrabber(url)// 使用协程
try {
grabber.start()
logger.info("grabber启动成功")
val converter = Java2DFrameConverter()
while (true) {
when (val frame = grabber.grabImage()) {
null -> {
logger.info("截图取帧失败")
}
else -> {
val bufferedImage = converter.getBufferedImage(frame)
val filePath = record + File.separator + screenshot.getString("channelId")
if (!File(filePath).exists()) {
File(filePath).mkdir()
}
val fileName =
record + File.separator + screenshot.getString("channelId") + File.separator + screenshot.getString("channelId") + "_" + DateTimeFormatter.ofPattern(
"yyyyMMddHHmmss-HHmmss"
)
.format(LocalDateTime.now()) + ".jpg"
logger.info("保存地址:$fileName")
ImageIO.write(bufferedImage, "jpg", File(fileName))
break
}
}
}
} catch (e: Exception) {
logger.error("抓取截图·失败·", e)
} finally {
grabber.stop()
grabber.release()
}
}
return result
}
event!!.consumer<JsonObject>(EventBusAddress.SYS_DEVICE_CHANNEL_SCREENSHOT.address)?.handler { replay ->
val message = replay.body()
val port = message.getString("monitorDomain").substringAfterLast(":").toInt()
var domain = message.getString("monitorDomain").substringBeforeLast(":").substringAfterLast("/")
val tokenString = message.getString("token")
val channelId = message.getString("channelId")
val subType = message.getString("subType")
val scheme = message.getString("scheme")
val realmonitorUrl = "/videoService/realmonitor/uri?channelId=$channelId&subType=$subType&scheme=$scheme"
logger.info("获取设备通道预览url:$realmonitorUrl")
client!!.get(port, domain, realmonitorUrl)
.putHeader("X-Subject-Token", tokenString)
.send()
.onSuccess { res ->
val result = res.bodyAsJsonObject()
logger.info("获取设备通道预览 statusCode:" + res.statusCode())
if (res.statusCode() == 200) {
result.put("channelId", channelId) // 通道id
replay.reply(screenshotAction(result))
} else {
replay.reply(JsonObject().put("msg", "获取预览地址失败"))
}
}
.onFailure {
replay.reply(JsonObject().put("msg", "获取预览地址失败"))
}
}
}
} }

View File

@ -0,0 +1,201 @@
package com.hisense.dahua_video.util
import com.hisense.dahua_video.consts.EventBusAddress
import com.hisense.dahua_video.consts.MonitorScheme
import io.vertx.core.Vertx
import io.vertx.core.eventbus.EventBus
import io.vertx.core.impl.logging.LoggerFactory
import io.vertx.core.json.JsonArray
import io.vertx.core.json.JsonObject
import io.vertx.ext.web.client.WebClient
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.bytedeco.javacv.FFmpegFrameGrabber
import org.bytedeco.javacv.Java2DFrameConverter
import java.io.File
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.util.concurrent.atomic.AtomicInteger
import javax.imageio.ImageIO
/**
* 全局截图工具
*/
class ScreenshotUtil(vertx: Vertx) {
private val logger = LoggerFactory.getLogger(DevicesManagerUtil::class.java)
private val cpuNum = Runtime.getRuntime().availableProcessors()
private var vertx: Vertx
private var event: EventBus? = null
private var client: WebClient? = null
private var record: String? = null
init {
this.vertx = vertx
this.event = this.vertx.eventBus()
client = WebClient.create(this.vertx)
record =
vertx.orCreateContext.config().getString("recroot", System.getProperty("user.dir") + File.separator + "record")
screenshot()
}
/**
* 截图所有平台内的通道
*/
fun allDeviceChannel() {
event!!.request<JsonArray>(EventBusAddress.SYS_MONITOR_USER_ALLMONITORUSER_TOKEN.address, JsonObject()) {
if (it.succeeded()) {
it.result().body().stream().forEach { index ->
index as JsonObject
val userId = index.getInteger("id") // 用户id
event!!.request<JsonArray>(
EventBusAddress.SYS_DEVICE_CHANNEL_ONLINE.address, // 获取所有在线通道
JsonObject().put("id", userId)
) { res ->
if (res.succeeded()) {
val temp = res.result().body()
temp.stream().forEach { index_ ->
var temp = JsonObject()
.put("token", index.getString("token"))
.put("userName", index.getString("userName"))
.put("id", index.getInteger("id"))
.put("monitorDomain", index.getString("monitorDomain"))
.put("duration", index.getString("duration"))
index_ as JsonObject
val channelId = index_.getString("channel_no")
val subType = 1
val scheme = 2
temp.put("channelId", channelId)
temp.put("subType", subType)
temp.put("scheme", MonitorScheme.values()[scheme].scheme)
GlobalScope.launch(Dispatchers.IO) {
val random = (3000..60 * 60 * 1000).random().toLong()
delay(random)
logger.info("截图传参:" + temp.encode())
event!!.request<JsonObject>(
EventBusAddress.SYS_DEVICE_CHANNEL_SCREENSHOT.address,
temp
) { previewUrl ->
if (previewUrl.succeeded()) {
logger.info("发起截图成功")
} else {
logger.info("发起截图失败")
}
}
}
}
}
}
}
}
}
}
/**
* 截图通道画面
*/
private fun screenshot() {
var taskCount = AtomicInteger(0)
/**
* 执行截图
*/
fun screenshotAction(screenshot: JsonObject): JsonObject {
taskCount.getAndAdd(1)
val url = screenshot.getString("url")
logger.info("抓取url:$url")
val result = JsonObject()
result.put("startTime", LocalDateTime.now().toString())
GlobalScope.launch(Dispatchers.IO) {
val grabber = FFmpegFrameGrabber(url)// 使用协程
val converter = Java2DFrameConverter()
try {
if (screenshot.getString("scheme") == MonitorScheme.RTSP.scheme) {
grabber.setOption("rtsp_transport", "tcp")
}
grabber.setOption("stimeout", "2000000")
grabber.start()
logger.info("grabber启动成功")
while (true) {
when (val frame = grabber.grabImage()) {
null -> {
logger.info("截图取帧失败")
}
else -> {
val bufferedImage = converter.getBufferedImage(frame)
val filePath = record + File.separator + screenshot.getString("channelId")
if (!File(filePath).exists()) {
File(filePath).mkdir()
}
val fileName =
record + File.separator + screenshot.getString("channelId") + File.separator + screenshot.getString("channelId") + "_" + DateTimeFormatter.ofPattern(
"yyyyMMddHHmmss-HHmmss"
)
.format(LocalDateTime.now()) + ".jpg"
logger.info("保存地址:$fileName")
ImageIO.write(bufferedImage, "jpg", File(fileName))
logger.info("图片保存成功:$fileName")
break
}
}
}
} catch (e: Exception) {
logger.error("抓取截图·失败·", e)
} finally {
converter.close()
grabber.stop()
grabber.release()
taskCount.getAndAdd(-1)
}
}
return result
}
event!!.consumer<JsonObject>(EventBusAddress.SYS_DEVICE_CHANNEL_SCREENSHOT.address)?.handler { replay ->
val message = replay.body()
val port = message.getString("monitorDomain").substringAfterLast(":").toInt()
var domain = message.getString("monitorDomain").substringBeforeLast(":").substringAfterLast("/")
val tokenString = message.getString("token")
val channelId = message.getString("channelId")
val subType = message.getString("subType")
val scheme = message.getString("scheme")
val realmonitorUrl = "/videoService/realmonitor/uri?channelId=$channelId&subType=$subType&scheme=$scheme"
logger.info("获取设备通道预览url:$realmonitorUrl")
client!!.get(port, domain, realmonitorUrl)
.putHeader("X-Subject-Token", tokenString)
.send()
.onSuccess { res ->
val result = res.bodyAsJsonObject()
result.put("scheme", scheme)
logger.info("获取设备通道预览 statusCode:" + res.statusCode())
if (res.statusCode() == 200) {
result.put("channelId", channelId) // 通道id
GlobalScope.launch(Dispatchers.IO) {
while (true) {
if (taskCount.get() < cpuNum * 2 - 1) {
replay.reply(screenshotAction(result))
break
} else {
logger.info("截图队列已满,尝试重试中:${result.encode()}")
val random = (3000..10000).random().toLong()
delay(random)
}
}
}
} else {
replay.reply(JsonObject().put("msg", "获取预览地址失败"))
}
}
.onFailure {
replay.reply(JsonObject().put("msg", "获取预览地址失败"))
}
}
}
}

View File

@ -12,7 +12,7 @@
<PatternLayout pattern="${log-pattern}"/> <PatternLayout pattern="${log-pattern}"/>
</Console> </Console>
<RollingRandomAccessFile name="INFO-FILE" fileName="logs/app.log" append="true" <RollingRandomAccessFile name="INFO-FILE" fileName="logs/app.log" append="true"
filePattern="logs/app.log.%d{yyyyMMdd}-%i"> filePattern="logs/app.%d{yyyyMMdd}-%i.log">
<PatternLayout> <PatternLayout>
<Pattern>%d %-5p [%c]-[%t] %m%n</Pattern> <Pattern>%d %-5p [%c]-[%t] %m%n</Pattern>
</PatternLayout> </PatternLayout>
@ -32,7 +32,7 @@
</RollingRandomAccessFile> </RollingRandomAccessFile>
<RollingRandomAccessFile name="ERROR-FILE" fileName="logs/app-error.log" append="true" <RollingRandomAccessFile name="ERROR-FILE" fileName="logs/app-error.log" append="true"
filePattern="logs/app-error.log.%d{yyyyMMdd}-%i"> filePattern="logs/app-error.%d{yyyyMMdd}-%i.log">
<PatternLayout> <PatternLayout>
<Pattern>%d %-5p [%c]-[%t] %m%n</Pattern> <Pattern>%d %-5p [%c]-[%t] %m%n</Pattern>
</PatternLayout> </PatternLayout>

View File

@ -16,14 +16,14 @@
<ul class="layui-nav layui-layout-left" lay-header-event="menuLeft"> <ul class="layui-nav layui-layout-left" lay-header-event="menuLeft">
<li class="layui-nav-item layui-hide-xs"><a href="">视频预览</a></li> <li class="layui-nav-item layui-hide-xs"><a href="">视频预览</a></li>
<li class="layui-nav-item layui-hide-xs"><a href="">视频截图</a></li> <li class="layui-nav-item layui-hide-xs"><a href="">视频截图</a></li>
<li class="layui-nav-item"> <!-- <li class="layui-nav-item">-->
<a href="javascript:;">nav groups</a> <!-- <a href="javascript:;">nav groups</a>-->
<dl class="layui-nav-child"> <!-- <dl class="layui-nav-child">-->
<dd><a href="">menu 11</a></dd> <!-- <dd><a href="">menu 11</a></dd>-->
<dd><a href="">menu 22</a></dd> <!-- <dd><a href="">menu 22</a></dd>-->
<dd><a href="">menu 33</a></dd> <!-- <dd><a href="">menu 33</a></dd>-->
</dl> <!-- </dl>-->
</li> <!-- </li>-->
</ul> </ul>
<ul class="layui-nav layui-layout-right"> <ul class="layui-nav layui-layout-right">
<li class="layui-nav-item layui-hide layui-show-md-inline-block"> <li class="layui-nav-item layui-hide layui-show-md-inline-block">
@ -32,9 +32,9 @@
<span th:text="${userName}"></span> <span th:text="${userName}"></span>
</a> </a>
<dl class="layui-nav-child"> <dl class="layui-nav-child">
<dd><a href="">Your Profile</a></dd> <dd><a href="">个人信息</a></dd>
<dd><a href="">Settings</a></dd> <dd><a href="">个人设置</a></dd>
<dd><a href="">Sign out</a></dd> <dd><a href="">退出</a></dd>
</dl> </dl>
</li> </li>
<li class="layui-nav-item" lay-header-event="menuRight" lay-unselect> <li class="layui-nav-item" lay-header-event="menuRight" lay-unselect>
@ -49,18 +49,17 @@
<div class="layui-side-scroll"> <div class="layui-side-scroll">
<!-- 左侧导航区域可配合layui已有的垂直导航 --> <!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test"> <ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item"> <!-- <li class="layui-nav-item">-->
<a href="javascript:;"><span th:text='${orgTreeName}'></span></a> <!-- <a href="javascript:;"><span th:text='${orgTreeName}'></span></a>-->
<dl class="layui-nav-child" th:each="org : ${childOrgs}"> <!-- <dl class="layui-nav-child" th:each="org : ${childOrgs}">-->
<dd><a href="javascript:;"><span th:text="${org.name}"></span></a></dd> <!-- <dd><a href="javascript:;"><span th:text="${org.name}"></span></a></dd>-->
</dl> <!-- </dl>-->
</li> <!-- </li>-->
<li class="layui-nav-item"> <li class="layui-nav-item">
<a href="javascript:;">平台设置</a> <a href="javascript:;">平台设置</a>
<dl class="layui-nav-child"> <dl class="layui-nav-child">
<dd><a href="javascript:;">list 1</a></dd> <dd><a href="javascript:;">第三方平台设置</a></dd>
<dd><a href="javascript:;">list 2</a></dd> <dd><a href="javascript:;">运行日志</a></dd>
<dd><a href="">超链接</a></dd>
</dl> </dl>
</li> </li>
</ul> </ul>
@ -97,7 +96,7 @@ layui.use(['element', 'layer', 'util'], function(){
,menuRight: function(){ ,menuRight: function(){
layer.open({ layer.open({
type: 1 type: 1
,content: '<div style="padding: 15px;">处理右侧面板的操作</div>' ,content: '<div style="padding: 15px;">流媒体任务列表</div>'
,area: ['260px', '100%'] ,area: ['260px', '100%']
,offset: 'rt' //右上角 ,offset: 'rt' //右上角
,anim: 5 ,anim: 5
@ -111,5 +110,6 @@ layui.use(['element', 'layer', 'util'], function(){
</script> </script>
</html> </html>