eventuate-tram / eventuate-tram-sagas-examples-customers-and-orders

Spring Boot/JPA microservices that use an orchestration-based saga to maintain data consistency
Other
520 stars 236 forks source link

Eventuate CDC isn't working with my own Postgres Database #45

Open BenNeighbour opened 3 years ago

BenNeighbour commented 3 years ago

Hi all,

I just want to start off by saying how much I like your framework, even though I haven't got my sagas working yet, Eventuate Sagas makes developing the sagas much easier rather than having to implement all of this stuff ourselves!

Just a quick question about the Eventuate CDC (from your Docker image) - do I need to link this and all of my spring cloud services to a Postgres database that runs on your image specifically? I thought the only difference between the DB created in the saga-customers-and-orders-example https://github.com/eventuate-tram/eventuate-tram-sagas-examples-customers-and-orders was that some tables were already created - and that the CDC would just create them anyway? Or does it not work like that?

Here is my stacktrace coming from the CDC:

java.lang.RuntimeException: Cannot get table io.eventuate.local.common.SchemaAndTable@50514dec[schema=eventuate,tableName=message]: result set is empty
        at io.eventuate.local.polling.PollingDao.queryPrimaryKey(PollingDao.java:235) [eventuate-local-java-cdc-connector-polling-0.10.0-SNAPSHOT.jar!/:na]
        at io.eventuate.local.polling.PollingDao.lambda$getPrimaryKey$4(PollingDao.java:208) [eventuate-local-java-cdc-connector-polling-0.10.0-SNAPSHOT.jar!/:na]
        at io.eventuate.local.common.DaoUtils.handleConnectionLost(DaoUtils.java:22) ~[eventuate-local-java-cdc-connector-common-0.10.0-SNAPSHOT.jar!/:na]
        at io.eventuate.local.polling.PollingDao.getPrimaryKey(PollingDao.java:206) [eventuate-local-java-cdc-connector-polling-0.10.0-SNAPSHOT.jar!/:na]
        at io.eventuate.local.polling.PollingDao.processEvents(PollingDao.java:113) [eventuate-local-java-cdc-connector-polling-0.10.0-SNAPSHOT.jar!/:na]
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_252]
        at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:1.8.0_252]
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[na:1.8.0_252]
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) ~[na:1.8.0_252]
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_252]
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_252]
        at java.util.stream.ReferencePipeline.reduce(ReferencePipeline.java:541) ~[na:1.8.0_252]
        at io.eventuate.local.polling.PollingDao.start(PollingDao.java:93) [eventuate-local-java-cdc-connector-polling-0.10.0-SNAPSHOT.jar!/:na]
        at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_252]

2021-01-20 06:05:26.708 ERROR 6 --- [       Thread-6] io.eventuate.local.common.DaoUtils       : Could not access database Cannot get table io.eventuate.local.common.SchemaAndTable@50514dec[schema=eventuate,tableName=message
]: result set is empty - retrying in 500 milliseconds

In my Kubernetes Deployment for this, I have pointed at the image to the same tag, like this eventuateio/eventuate-cdc-service:0.6.1.RELEASE - do I need to specify a specific version number as well?

Also, do all of my services still need to be linked to the same database or is that happening just for less complication for example?

Thanks,

Ben