Skip to Content
author's profile photo Former Member
Former Member

“y2ysync - Lost Sync Status":

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?

Add a comment
10|10000 characters needed characters exceeded

Related questions

1 Answer

  • Best Answer
    Posted on Jul 27, 2016 at 08:47 PM

    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.

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.