A.
```
2023-05-25 17:00:00,842 ERROR [org.qua.cor.JobRunShell] (QuarkusQuartzScheduler_Worker-24) Job DEFAULT.CloudSyncJob threw an unhandled Exception: : java.lang.IllegalStateException: Duplicate key fdf68577-eb25-47c2-81a8-050c5c0ca9f5 (attempted merging values LanePointServiceTimeDao{arrivedAt=2023-05-25T11:29:11Z, carId=fdf68577-eb25-47c2-81a8-050c5c0ca9f5, lanePoint=LanePoint{uuid=dc2d0bb0-b836-41e3-a6a2-d998a4f1c107, name='?????', type=ORDER, lane=Lane{uuid=6b8458c7-b926-4537-b039-6fab0c65f958, name='???????? ?????', type=STRAIGHT, status=ENABLED, updatedAt=2022-07-05T13:18:35.150Z, cloudSynced=true}, index=1, sensor=Sensor{uuid=fc58ff8e-7c6d-42d0-8b00-82674c30c182, deviceNumber='i_1', type=INDUCTIVE, status=ENABLED, cloudSynced=true}, position=NONE, status=ENABLED, pointKind=MAIN, updatedAt=2022-07-05T13:19:16.980Z}, serviceTime=5, queueSize=0, tier=FIRST} and LanePointServiceTimeDao{arrivedAt=2023-05-25T11:29:22Z, carId=fdf68577-eb25-47c2-81a8-050c5c0ca9f5, lanePoint=LanePoint{uuid=f044ac55-66a1-4d11-a018-0f03cf237513, name='?????', type=CHECKOUT, lane=Lane{uuid=6b8458c7-b926-4537-b039-6fab0c65f958, name='???????? ?????', type=STRAIGHT, status=ENABLED, updatedAt=2022-07-05T13:18:35.150Z, cloudSynced=true}, index=2, sensor=Sensor{uuid=b0b1267e-52d5-4253-bd9d-eea4e2a0f416, deviceNumber='i_2', type=INDUCTIVE, status=ENABLED, cloudSynced=true}, position=NONE, status=ENABLED, pointKind=MAIN, updatedAt=2022-07-08T13:16:07.443Z}, serviceTime=5, queueSize=0, tier=SECOND})
at java.base/java.util.stream.Collectors.duplicateKeyException(Collectors.java:135)
at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:182)
at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at com.icl_services.queue.cloud_sync.service.ServiceTimeService.elementReplication(ServiceTimeService.java:105)
at com.icl_services.queue.cloud_sync.service.ServiceTimeService.lambda$replication$0(ServiceTimeService.java:79)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at com.icl_services.queue.cloud_sync.service.ServiceTimeService.replication(ServiceTimeService.java:79)
at com.icl_services.queue.cloud_sync.job.CloudSyncJob.execute(CloudSyncJob.java:44)
at com.icl_services.queue.cloud_sync.job.CloudSyncJob_Subclass.execute$$superforward1(Unknown Source)
at com.icl_services.queue.cloud_sync.job.CloudSyncJob_Subclass$$function$$1.apply(Unknown Source)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)
at com.icl_services.queue.common_shared_objects.interceptor.LicenseInterceptor.licenseInvocation(LicenseInterceptor.java:18)
at com.icl_services.queue.common_shared_objects.interceptor.LicenseInterceptor_Bean.intercept(Unknown Source)
at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:33)
at com.icl_services.queue.cloud_sync.job.CloudSyncJob_Subclass.execute(Unknown Source)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
```
```java=91
private void elementReplication(UUID laneId, OffsetDateTime lastSyncedDate, int settingBatchSizeValue) {
List<LaneServiceTime> laneServiceTimes =
laneServiceTimeDao.findByLaneIdAndArrivedAtAfterGivenDate(laneId, lastSyncedDate);
if (ObjectUtils.isEmpty(laneServiceTimes)) {
checkAndUpdateLaneStatus(laneId);
LOG.debug("Not data for lane {} to replication lane service time", laneId);
return;
}
Set<UUID> replicationCars = laneServiceTimes.stream()
.map(LaneServiceTime::getCarId)
.collect(Collectors.toSet());
List<LanePointServiceTime> lanePointServiceTimes =
lanePointServiceTimeDao.findByArrivedAtAfterGivenDateAndCarIdIn(lastSyncedDate, replicationCars);
Map<UUID, LanePointServiceTime> lanePointServiceTimesByCar = lanePointServiceTimes.stream()
.collect(Collectors.toMap(LanePointServiceTime::getCarId, Function.identity()));
int laneBatchSize = calculateLaneBatchSizeValue(settingBatchSizeValue, lanePointServiceTimes);
List<List<LaneServiceTime>> laneServiceTimesDividedByBatchSize =
ListUtils.partition(laneServiceTimes, laneBatchSize);
laneServiceTimesDividedByBatchSize.forEach(partLaneServiceTime -> {
Set<UUID> partCars = partLaneServiceTime.stream()
.map(LaneServiceTime::getCarId)
.collect(Collectors.toSet());
List<LanePointServiceTime> partLanePoint = lanePointServiceTimesByCar.entrySet().stream()
.filter(e -> partCars.contains(e.getKey()))
.map(Map.Entry::getValue)
.collect(Collectors.toList());
send(new ServiceTimeWrapperRequest(laneServiceTimeMapper.toRequests(partLaneServiceTime), lanePointServiceTimeMapper.toRequests(partLanePoint)));
cloudSyncInfoDao.update(laneId, OffsetDateTime.now(),
partLaneServiceTime.stream()
.max(Comparator.comparing(LaneServiceTime::getArrivedAt)).get().getArrivedAt());
});
checkAndUpdateLaneStatus(laneId);
LOG.debug("Lane service times for lane {} successfully send to the cloud", laneId);
}
```
B.
:::spoiler Logs
```=
2023-05-26 09:12:25,843 ERROR [org.qua.cor.JobRunShell] (QuarkusQuartzScheduler_Worker-12) Job DEFAULT.CloudSyncJob threw an unhandled Exception: : java.lang.RuntimeException: java.sql.SQLException: Acquisition timeout while waiting for new connection
at com.icl_services.queue.jpa_shared_objects.config.NativeToolsConnectionManager.onBeginTransaction(NativeToolsConnectionManager.java:29)
at com.icl_services.queue.jpa_shared_objects.config.NativeToolsConnectionManager_Bean.create(Unknown Source)
at com.icl_services.queue.jpa_shared_objects.config.NativeToolsConnectionManager_Bean.create(Unknown Source)
at io.quarkus.narayana.jta.runtime.context.TransactionContext.get(TransactionContext.java:145)
at io.quarkus.arc.InjectableContext.getIfActive(InjectableContext.java:60)
at io.quarkus.arc.impl.ClientProxies.getDelegate(ClientProxies.java:30)
at com.icl_services.queue.jpa_shared_objects.config.NativeToolsConnectionManager_ClientProxy.arc$delegate(Unknown Source)
at com.icl_services.queue.jpa_shared_objects.config.NativeToolsConnectionManager_ClientProxy.getConnection(Unknown Source)
at com.icl_services.queue.jpa_shared_objects.jpa.dao.postgresql.SensorDaoImpl.getAllBySyncStatus(SensorDaoImpl.java:248)
at com.icl_services.queue.jpa_shared_objects.jpa.dao.postgresql.SensorDaoImpl_Subclass.getAllBySyncStatus$$superforward1(Unknown Source)
at com.icl_services.queue.jpa_shared_objects.jpa.dao.postgresql.SensorDaoImpl_Subclass$$function$$2.apply(Unknown Source)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:133)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:104)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.doIntercept(TransactionalInterceptorRequired.java:38)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.intercept(TransactionalInterceptorBase.java:58)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:32)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired_Bean.intercept(Unknown Source)
at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:33)
at com.icl_services.queue.jpa_shared_objects.jpa.dao.postgresql.SensorDaoImpl_Subclass.getAllBySyncStatus(Unknown Source)
at com.icl_services.queue.jpa_shared_objects.jpa.dao.postgresql.SensorDaoImpl_ClientProxy.getAllBySyncStatus(Unknown Source)
at com.icl_services.queue.cloud_sync.service.ReplicationCloudService.sensorReplication(ReplicationCloudService.java:47)
at com.icl_services.queue.cloud_sync.job.CloudSyncJob.execute(CloudSyncJob.java:41)
at com.icl_services.queue.cloud_sync.job.CloudSyncJob_Subclass.execute$$superforward1(Unknown Source)
at com.icl_services.queue.cloud_sync.job.CloudSyncJob_Subclass$$function$$1.apply(Unknown Source)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)
at com.icl_services.queue.common_shared_objects.interceptor.LicenseInterceptor.licenseInvocation(LicenseInterceptor.java:18)
at com.icl_services.queue.common_shared_objects.interceptor.LicenseInterceptor_Bean.intercept(Unknown Source)
at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:33)
at com.icl_services.queue.cloud_sync.job.CloudSyncJob_Subclass.execute(Unknown Source)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.sql.SQLException: Acquisition timeout while waiting for new connection
at io.agroal.pool.ConnectionPool.handlerFromSharedCache(ConnectionPool.java:320)
at io.agroal.pool.ConnectionPool.getConnection(ConnectionPool.java:248)
at io.agroal.pool.DataSource.getConnection(DataSource.java:86)
at com.icl_services.queue.jpa_shared_objects.config.NativeToolsConnectionManager.onBeginTransaction(NativeToolsConnectionManager.java:27)
... 35 more
Caused by: java.util.concurrent.TimeoutException
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:204)
at io.agroal.pool.ConnectionPool.handlerFromSharedCache(ConnectionPool.java:296)
... 38 more
2023-05-26 09:12:25,862 ERROR [org.qua.cor.ErrorLogger] (QuarkusQuartzScheduler_Worker-12) Job (DEFAULT.CloudSyncJob threw an exception.: org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.RuntimeException: java.sql.SQLException: Acquisition timeout while waiting for new connection]
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.lang.RuntimeException: java.sql.SQLException: Acquisition timeout while waiting for new connection
at com.icl_services.queue.jpa_shared_objects.config.NativeToolsConnectionManager.onBeginTransaction(NativeToolsConnectionManager.java:29)
at com.icl_services.queue.jpa_shared_objects.config.NativeToolsConnectionManager_Bean.create(Unknown Source)
at com.icl_services.queue.jpa_shared_objects.config.NativeToolsConnectionManager_Bean.create(Unknown Source)
at io.quarkus.narayana.jta.runtime.context.TransactionContext.get(TransactionContext.java:145)
at io.quarkus.arc.InjectableContext.getIfActive(InjectableContext.java:60)
at io.quarkus.arc.impl.ClientProxies.getDelegate(ClientProxies.java:30)
at com.icl_services.queue.jpa_shared_objects.config.NativeToolsConnectionManager_ClientProxy.arc$delegate(Unknown Source)
at com.icl_services.queue.jpa_shared_objects.config.NativeToolsConnectionManager_ClientProxy.getConnection(Unknown Source)
at com.icl_services.queue.jpa_shared_objects.jpa.dao.postgresql.SensorDaoImpl.getAllBySyncStatus(SensorDaoImpl.java:248)
at com.icl_services.queue.jpa_shared_objects.jpa.dao.postgresql.SensorDaoImpl_Subclass.getAllBySyncStatus$$superforward1(Unknown Source)
at com.icl_services.queue.jpa_shared_objects.jpa.dao.postgresql.SensorDaoImpl_Subclass$$function$$2.apply(Unknown Source)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:133)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:104)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.doIntercept(TransactionalInterceptorRequired.java:38)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.intercept(TransactionalInterceptorBase.java:58)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:32)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired_Bean.intercept(Unknown Source)
at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:33)
at com.icl_services.queue.jpa_shared_objects.jpa.dao.postgresql.SensorDaoImpl_Subclass.getAllBySyncStatus(Unknown Source)
at com.icl_services.queue.jpa_shared_objects.jpa.dao.postgresql.SensorDaoImpl_ClientProxy.getAllBySyncStatus(Unknown Source)
at com.icl_services.queue.cloud_sync.service.ReplicationCloudService.sensorReplication(ReplicationCloudService.java:47)
at com.icl_services.queue.cloud_sync.job.CloudSyncJob.execute(CloudSyncJob.java:41)
at com.icl_services.queue.cloud_sync.job.CloudSyncJob_Subclass.execute$$superforward1(Unknown Source)
at com.icl_services.queue.cloud_sync.job.CloudSyncJob_Subclass$$function$$1.apply(Unknown Source)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)
at com.icl_services.queue.common_shared_objects.interceptor.LicenseInterceptor.licenseInvocation(LicenseInterceptor.java:18)
at com.icl_services.queue.common_shared_objects.interceptor.LicenseInterceptor_Bean.intercept(Unknown Source)
at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:33)
at com.icl_services.queue.cloud_sync.job.CloudSyncJob_Subclass.execute(Unknown Source)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
... 1 more
Caused by: java.sql.SQLException: Acquisition timeout while waiting for new connection
at io.agroal.pool.ConnectionPool.handlerFromSharedCache(ConnectionPool.java:320)
at io.agroal.pool.ConnectionPool.getConnection(ConnectionPool.java:248)
at io.agroal.pool.DataSource.getConnection(DataSource.java:86)
at com.icl_services.queue.jpa_shared_objects.config.NativeToolsConnectionManager.onBeginTransaction(NativeToolsConnectionManager.java:27)
... 35 more
Caused by: java.util.concurrent.TimeoutException
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:204)
at io.agroal.pool.ConnectionPool.handlerFromSharedCache(ConnectionPool.java:296)
... 38 more
Process finished with exit code 130
```