cancel
Showing results for 
Search instead for 
Did you mean: 

“y2ysync - Lost Sync Status":

Former Member
0 Kudos

Problem “y2ysync - Lost Sync Status":

The source system and the Data Hub and are keeping track of item status. And the Data Hub has under normal circumstances always all the data. That means, the source system and the Data Hub must be in sync. If the Data Hub is loosing the status of synced items, for example after a crash of the database or faulty y2ysync configuration, both systems are out of sync, and the described error appears.

The delete event is stored in the source system, and will be sent with each y2ysync to the Data Hub, until the deletion is accepted. But the Data Hub does not know the item to be deleted and continues to throw an error with each sync.

Reproducing the Problem:

Build, initialize and start the hybris source system. Build, initialize and start the hybris target system. Build, initialize and start the Data Hub. Source: Ensure that the catalog which is about to be synced via y2ysync is fully synced between the Staged and the Online version (we sync the Online version). Source: Execute the model://uploadDhExtension script to load the y2ysync data model into the Data Hub. Source: Execute the y2ysync to Data Hub job. Source, Data Hub and target: Ensure that the sync was successful. Restnd initialize the Data Hub. Source: Delete a product. Source: Trigger the y2ysync. See exceptions and errors in the: In the y2ysync to Data Hub cron job. In the console log of the Data Hub.

Data Hub console log: 11-Jul-2016 10:28:40.040 SEVERE [http-nio-8080-exec-3] com.sun.jersey.spi.container.ContainerResponse.mapMappableContainerException The RuntimeException could not be mapped to a response, re-throwing to the HTTP container java.util.concurrent.CompletionException: java.lang.IllegalArgumentException at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273) at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280) at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1629) at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1618) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) Caused by: java.lang.IllegalArgumentException at com.google.common.base.Preconditions.checkArgument(Preconditions.java:111) at com.hybris.datahub.service.impl.DefaultCanonicalItemService.deleteByIntegrationKey(DefaultCanonicalItemService.java:386) at de.hybris.datahub.y2ysync.facade.impl.DefaultCsvImportFacade.deleteByIntegrationKey(DefaultCsvImportFacade.java:153) at de.hybris.datahub.y2ysync.facade.impl.DefaultCsvImportFacade.lambda$deleteInTx$4(DefaultCsvImportFacade.java:147) at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133) at de.hybris.datahub.y2ysync.facade.impl.DefaultCsvImportFacade.deleteInTx(DefaultCsvImportFacade.java:147) at de.hybris.datahub.y2ysync.facade.impl.DefaultCsvImportFacade.deleteCanonicalItems(DefaultCsvImportFacade.java:137) at de.hybris.datahub.y2ysync.facade.impl.DefaultCsvImportFacade.importCsv(DefaultCsvImportFacade.java:82) at de.hybris.datahub.y2ysync.rest.resources.Y2YSyncImportResource$ChunkProcessingTask.run(Y2YSyncImportResource.java:171) at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1626) ... 5 more

Question: How can we recover from this kind of situation? I haven’t found a “full sync” option to send all data to the Data Hub. My assumption is, that the source system is the master of the data, and it should be possible to restore a "broken" data hub and/or target system with the data from the source system. Do you agree with this?

Former Member
0 Kudos

Hi Thomas,

This requires more analysis, so I would recommend you to open a ticket for Hybris Product Support.

Regards, Eduard

Accepted Solutions (1)

Accepted Solutions (1)

former_member224482
Active Contributor
0 Kudos

The "full sync" or reset option I found is to delete all the markers using this impex :

 REMOVE ItemVersionMarker[batchmode=true];streamId[unique=true]
 ;your_Y2YStreamConfiguration_streamId

This will miss the deletion markers. Therefore, extra elements may remain in the target system.

Answers (0)