cryostatio / cryostat

Other
7 stars 8 forks source link

[Bug] Automated Rules fail to archive recordings #517

Closed andrewazores closed 2 weeks ago

andrewazores commented 2 weeks ago

Current Behavior

$ ./smoketest.bash -t

{
  "id": 1,
  "name": "test",
  "description": "",
  "matchExpression": "target.connectUrl.startsWith('service') && target.jvmId != null",
  "eventSpecifier": "template=Continuous,type=TARGET",
  "archivalPeriodSeconds": 30,
  "initialDelaySeconds": 0,
  "preservedArchives": 3,
  "maxAgeSeconds": 0,
  "maxSizeBytes": 26214400,
  "enabled": true
}

Expected Behavior

No response

Steps To Reproduce

No response

Environment

No response

Anything else?

cryostat_1            | 2024-06-13 13:12:07,004 ERROR [org.qua.cor.JobRunShell] (QuarkusQuartzScheduler_Worker-9) Job qkMkmIEtEFQKItfe_tGk8aZ76d0D_iaRqYo8G8h3SFM=.test threw an unhandled Exception: : jakarta.persistence.NoResultException: No result found for query [FROM io.cryostat.recordings.ActiveRecording WHERE id = ?1]
cryostat_1            |     at org.hibernate.query.spi.AbstractSelectionQuery.getSingleResult(AbstractSelectionQuery.java:476)
cryostat_1            |     at io.quarkus.hibernate.orm.panache.common.runtime.CommonPanacheQueryImpl.singleResult(CommonPanacheQueryImpl.java:309)
cryostat_1            |     at io.quarkus.hibernate.orm.panache.runtime.PanacheQueryImpl.singleResult(PanacheQueryImpl.java:169)
cryostat_1            |     at io.cryostat.rules.ScheduledArchiveJob.execute(ScheduledArchiveJob.java:57)
cryostat_1            |     at io.cryostat.rules.ScheduledArchiveJob_Subclass.execute$$superforward(Unknown Source)
cryostat_1            |     at io.cryostat.rules.ScheduledArchiveJob_Subclass$$function$$1.apply(Unknown Source)
cryostat_1            |     at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:73)
cryostat_1            |     at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:62)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:136)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:107)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.doIntercept(TransactionalInterceptorRequired.java:38)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.intercept(TransactionalInterceptorBase.java:61)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:32)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired_Bean.intercept(Unknown Source)
cryostat_1            |     at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
cryostat_1            |     at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:30)
cryostat_1            |     at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:27)
cryostat_1            |     at io.cryostat.rules.ScheduledArchiveJob_Subclass.execute(Unknown Source)
cryostat_1            |     at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
cryostat_1            |     at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
cryostat_1            | 
cryostat_1            | 2024-06-13 13:12:07,005 ERROR [org.qua.cor.ErrorLogger] (QuarkusQuartzScheduler_Worker-9) Job (qkMkmIEtEFQKItfe_tGk8aZ76d0D_iaRqYo8G8h3SFM=.test threw an exception.: org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: jakarta.persistence.NoResultException: No result found for query [FROM io.cryostat.recordings.ActiveRecording WHERE id = ?1]]
cryostat_1            |     at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
cryostat_1            |     at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
cryostat_1            | Caused by: jakarta.persistence.NoResultException: No result found for query [FROM io.cryostat.recordings.ActiveRecording WHERE id = ?1]
cryostat_1            |     at org.hibernate.query.spi.AbstractSelectionQuery.getSingleResult(AbstractSelectionQuery.java:476)
cryostat_1            |     at io.quarkus.hibernate.orm.panache.common.runtime.CommonPanacheQueryImpl.singleResult(CommonPanacheQueryImpl.java:309)
cryostat_1            |     at io.quarkus.hibernate.orm.panache.runtime.PanacheQueryImpl.singleResult(PanacheQueryImpl.java:169)
cryostat_1            |     at io.cryostat.rules.ScheduledArchiveJob.execute(ScheduledArchiveJob.java:57)
cryostat_1            |     at io.cryostat.rules.ScheduledArchiveJob_Subclass.execute$$superforward(Unknown Source)
cryostat_1            |     at io.cryostat.rules.ScheduledArchiveJob_Subclass$$function$$1.apply(Unknown Source)
cryostat_1            |     at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:73)
cryostat_1            |     at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:62)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:136)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:107)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.doIntercept(TransactionalInterceptorRequired.java:38)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.intercept(TransactionalInterceptorBase.java:61)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:32)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired_Bean.intercept(Unknown Source)
cryostat_1            |     at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
cryostat_1            |     at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:30)
cryostat_1            |     at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:27)
cryostat_1            |     at io.cryostat.rules.ScheduledArchiveJob_Subclass.execute(Unknown Source)
cryostat_1            |     at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
cryostat_1            |     ... 1 more
andrewazores commented 2 weeks ago

When disabling the Rule with clean=true,

cryostat_1            | Jun 13, 2024 1:16:04 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
cryostat_1            | WARN: SQL Error: 0, SQLState: 23505
cryostat_1            | Jun 13, 2024 1:16:04 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
cryostat_1            | ERROR: ERROR: duplicate key value violates unique constraint "ukr8nr64n7i34ipp019xrbbbyeh"
cryostat_1            |   Detail: Key (target_id, remoteid)=(4, 1) already exists.
cryostat_1            | Jun 13, 2024 1:16:04 PM com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator beforeCompletion
cryostat_1            | WARN: ARJUNA012125: TwoPhaseCoordinator.beforeCompletion - failed for SynchronizationImple< 0:ffff0a593bd4:87f5:666aefc3:430, org.hibernate.resource.transaction.backend.jta.internal.synchronization.RegisteredSynchronization@19b9e32d >
cryostat_1            | org.hibernate.exception.ConstraintViolationException: could not execute statement [ERROR: duplicate key value violates unique constraint "ukr8nr64n7i34ipp019xrbbbyeh"
cryostat_1            |   Detail: Key (target_id, remoteid)=(4, 1) already exists.] [insert into ActiveRecording (continuous,duration,external,maxAge,maxSize,metadata,name,remoteId,startTime,state,target_id,toDisk,id) values (?,?,?,?,?,?,?,?,?,?,?,?,?)]
cryostat_1            |     at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:95)
cryostat_1            |     at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:56)
cryostat_1            |     at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
cryostat_1            |     at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:278)
cryostat_1            |     at org.hibernate.engine.jdbc.mutation.internal.AbstractMutationExecutor.performNonBatchedMutation(AbstractMutationExecutor.java:107)
cryostat_1            |     at org.hibernate.engine.jdbc.mutation.internal.MutationExecutorSingleNonBatched.performNonBatchedOperations(MutationExecutorSingleNonBatched.java:40)
cryostat_1            |     at org.hibernate.engine.jdbc.mutation.internal.AbstractMutationExecutor.execute(AbstractMutationExecutor.java:52)
cryostat_1            |     at org.hibernate.persister.entity.mutation.InsertCoordinator.doStaticInserts(InsertCoordinator.java:171)
cryostat_1            |     at org.hibernate.persister.entity.mutation.InsertCoordinator.coordinateInsert(InsertCoordinator.java:112)
cryostat_1            |     at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2790)
cryostat_1            |     at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:102)
cryostat_1            |     at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:635)
cryostat_1            |     at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:502)
cryostat_1            |     at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:364)
cryostat_1            |     at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
cryostat_1            |     at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127)
cryostat_1            |     at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1412)
cryostat_1            |     at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:485)
cryostat_1            |     at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:2301)
cryostat_1            |     at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:1966)
cryostat_1            |     at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:439)
cryostat_1            |     at org.hibernate.resource.transaction.backend.jta.internal.JtaTransactionCoordinatorImpl.beforeCompletion(JtaTransactionCoordinatorImpl.java:336)
cryostat_1            |     at org.hibernate.resource.transaction.backend.jta.internal.synchronization.SynchronizationCallbackCoordinatorNonTrackingImpl.beforeCompletion(SynchronizationCallbackCoordinatorNonTrackingImpl.java:47)
cryostat_1            |     at org.hibernate.resource.transaction.backend.jta.internal.synchronization.RegisteredSynchronization.beforeCompletion(RegisteredSynchronization.java:37)
cryostat_1            |     at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:76)
cryostat_1            |     at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:360)
cryostat_1            |     at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:91)
cryostat_1            |     at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162)
cryostat_1            |     at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1295)
cryostat_1            |     at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:128)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.NotifyingTransactionManager.commit(NotifyingTransactionManager.java:70)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.endTransaction(TransactionalInterceptorBase.java:406)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:175)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:107)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.doIntercept(TransactionalInterceptorRequired.java:38)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.intercept(TransactionalInterceptorBase.java:61)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:32)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired_Bean.intercept(Unknown Source)
cryostat_1            |     at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
cryostat_1            |     at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:30)
cryostat_1            |     at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:27)
cryostat_1            |     at io.cryostat.rules.RuleService_Subclass.handleRuleRecordingCleanup(Unknown Source)
cryostat_1            |     at io.cryostat.rules.RuleService_ClientProxy.handleRuleRecordingCleanup(Unknown Source)
cryostat_1            |     at io.cryostat.rules.RuleService_VertxInvoker_handleRuleRecordingCleanup_12ea5068b8caff205644b1f992bb6c654fedfbe4.invokeBean(Unknown Source)
cryostat_1            |     at io.quarkus.vertx.runtime.EventConsumerInvoker.invoke(EventConsumerInvoker.java:41)
cryostat_1            |     at io.quarkus.vertx.runtime.VertxRecorder$3$1$1.handle(VertxRecorder.java:116)
cryostat_1            |     at io.quarkus.vertx.runtime.VertxRecorder$3$1$1.handle(VertxRecorder.java:112)
cryostat_1            |     at io.vertx.core.impl.ContextBase.lambda$executeBlocking$1(ContextBase.java:180)
cryostat_1            |     at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:277)
cryostat_1            |     at io.vertx.core.impl.ContextBase.lambda$internalExecuteBlocking$2(ContextBase.java:199)
cryostat_1            |     at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:576)
cryostat_1            |     at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
cryostat_1            |     at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
cryostat_1            |     at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
cryostat_1            |     at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
cryostat_1            |     at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
cryostat_1            |     at java.base/java.lang.Thread.run(Thread.java:840)
cryostat_1            | Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "ukr8nr64n7i34ipp019xrbbbyeh"
cryostat_1            |   Detail: Key (target_id, remoteid)=(4, 1) already exists.
cryostat_1            |     at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2713)
cryostat_1            |     at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2401)
cryostat_1            |     at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:368)
cryostat_1            |     at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:498)
cryostat_1            |     at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:415)
cryostat_1            |     at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190)
cryostat_1            |     at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:152)
cryostat_1            |     at io.agroal.pool.wrapper.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:88)
cryostat_1            |     at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:275)
cryostat_1            |     ... 53 more
cryostat_1            | 
cryostat_1            | Jun 13, 2024 1:16:04 PM io.quarkus.vertx.core.runtime.VertxCoreRecorder$7 handle
cryostat_1            | ERROR: Uncaught exception received by Vert.x
cryostat_1            | io.quarkus.arc.ArcUndeclaredThrowableException: Error invoking subclass method
cryostat_1            |     at io.cryostat.rules.RuleService_Subclass.handleRuleRecordingCleanup(Unknown Source)
cryostat_1            |     at io.cryostat.rules.RuleService_ClientProxy.handleRuleRecordingCleanup(Unknown Source)
cryostat_1            |     at io.cryostat.rules.RuleService_VertxInvoker_handleRuleRecordingCleanup_12ea5068b8caff205644b1f992bb6c654fedfbe4.invokeBean(Unknown Source)
cryostat_1            |     at io.quarkus.vertx.runtime.EventConsumerInvoker.invoke(EventConsumerInvoker.java:41)
cryostat_1            |     at io.quarkus.vertx.runtime.VertxRecorder$3$1$1.handle(VertxRecorder.java:116)
cryostat_1            |     at io.quarkus.vertx.runtime.VertxRecorder$3$1$1.handle(VertxRecorder.java:112)
cryostat_1            |     at io.vertx.core.impl.ContextBase.lambda$executeBlocking$1(ContextBase.java:180)
cryostat_1            |     at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:277)
cryostat_1            |     at io.vertx.core.impl.ContextBase.lambda$internalExecuteBlocking$2(ContextBase.java:199)
cryostat_1            |     at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:576)
cryostat_1            |     at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
cryostat_1            |     at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
cryostat_1            |     at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
cryostat_1            |     at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
cryostat_1            |     at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
cryostat_1            |     at java.base/java.lang.Thread.run(Thread.java:840)
cryostat_1            | Caused by: jakarta.transaction.RollbackException: ARJUNA016053: Could not commit transaction.
cryostat_1            |     at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1307)
cryostat_1            |     at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:128)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.NotifyingTransactionManager.commit(NotifyingTransactionManager.java:70)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.endTransaction(TransactionalInterceptorBase.java:406)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:175)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:107)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.doIntercept(TransactionalInterceptorRequired.java:38)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.intercept(TransactionalInterceptorBase.java:61)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:32)
cryostat_1            |     at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired_Bean.intercept(Unknown Source)
cryostat_1            |     at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
cryostat_1            |     at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:30)
cryostat_1            |     at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:27)
cryostat_1            |     ... 16 more
cryostat_1            | Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement [ERROR: duplicate key value violates unique constraint "ukr8nr64n7i34ipp019xrbbbyeh"
cryostat_1            |   Detail: Key (target_id, remoteid)=(4, 1) already exists.] [insert into ActiveRecording (continuous,duration,external,maxAge,maxSize,metadata,name,remoteId,startTime,state,target_id,toDisk,id) values (?,?,?,?,?,?,?,?,?,?,?,?,?)]
cryostat_1            |     at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:95)
cryostat_1            |     at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:56)
cryostat_1            |     at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
cryostat_1            |     at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:278)
cryostat_1            |     at org.hibernate.engine.jdbc.mutation.internal.AbstractMutationExecutor.performNonBatchedMutation(AbstractMutationExecutor.java:107)
cryostat_1            |     at org.hibernate.engine.jdbc.mutation.internal.MutationExecutorSingleNonBatched.performNonBatchedOperations(MutationExecutorSingleNonBatched.java:40)
cryostat_1            |     at org.hibernate.engine.jdbc.mutation.internal.AbstractMutationExecutor.execute(AbstractMutationExecutor.java:52)
cryostat_1            |     at org.hibernate.persister.entity.mutation.InsertCoordinator.doStaticInserts(InsertCoordinator.java:171)
cryostat_1            |     at org.hibernate.persister.entity.mutation.InsertCoordinator.coordinateInsert(InsertCoordinator.java:112)
cryostat_1            |     at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2790)
cryostat_1            |     at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:102)
cryostat_1            |     at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:635)
cryostat_1            |     at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:502)
cryostat_1            |     at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:364)
cryostat_1            |     at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
cryostat_1            |     at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127)
cryostat_1            |     at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1412)
cryostat_1            |     at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:485)
cryostat_1            |     at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:2301)
cryostat_1            |     at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:1966)
cryostat_1            |     at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:439)
cryostat_1            |     at org.hibernate.resource.transaction.backend.jta.internal.JtaTransactionCoordinatorImpl.beforeCompletion(JtaTransactionCoordinatorImpl.java:336)
cryostat_1            |     at org.hibernate.resource.transaction.backend.jta.internal.synchronization.SynchronizationCallbackCoordinatorNonTrackingImpl.beforeCompletion(SynchronizationCallbackCoordinatorNonTrackingImpl.java:47)
cryostat_1            |     at org.hibernate.resource.transaction.backend.jta.internal.synchronization.RegisteredSynchronization.beforeCompletion(RegisteredSynchronization.java:37)
cryostat_1            |     at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:76)
cryostat_1            |     at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:360)
cryostat_1            |     at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:91)
cryostat_1            |     at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162)
cryostat_1            |     at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1295)
cryostat_1            |     ... 28 more
cryostat_1            | Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "ukr8nr64n7i34ipp019xrbbbyeh"
cryostat_1            |   Detail: Key (target_id, remoteid)=(4, 1) already exists.
cryostat_1            |     at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2713)
cryostat_1            |     at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2401)
cryostat_1            |     at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:368)
cryostat_1            |     at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:498)
cryostat_1            |     at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:415)
cryostat_1            |     at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190)
cryostat_1            |     at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:152)
cryostat_1            |     at io.agroal.pool.wrapper.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:88)
cryostat_1            |     at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:275)
cryostat_1            |     ... 53 more