Scala API and Java Transaction API latest versions are not binary compatible

The following versions (latests) are not binary compatible due to Java SDK:

    ("com.couchbase.client" %% "scala-client" % "1.0.6").withSources(),
    ("com.couchbase.client" % "couchbase-transactions" % "1.0.1").withSources(),
16-Jul-2020 14:27:31	java.lang.NoSuchMethodError: com.couchbase.client.core.msg.kv.SubdocMutateRequest.<init>(Ljava/time/Duration;Lcom/couchbase/client/core/CoreContext;Lcom/couchbase/client/core/io/CollectionIdentifier;Lcom/couchbase/client/core/retry/RetryStrategy;Ljava/lang/String;ZZZZLjava/util/List;JJLjava/util/Optional;Lcom/couchbase/client/core/cnc/InternalSpan;)V
16-Jul-2020 14:27:31	        at com.couchbase.client.java.AsyncCollection.mutateInRequest(AsyncCollection.java:1141)
16-Jul-2020 14:27:31	        at com.couchbase.client.java.ReactiveCollection.lambda$mutateIn$25(ReactiveCollection.java:643)

It would be useful to keep them binary compatible, since Dependabot or Scala Steward will propose breaking PRs to existing code bases.

Hi @zoltan.zvara

If you add
(“com.couchbase.client” % “java-client” % “3.0.6”).withSources(),

it should fix this (tested locally). Scala 1.0.5 should also be compatible.

The problem was Scala and Java clients share a core-io dependency. Transactions 1.0.1 pulls in java-client 3.0.5, which depends on core-io 2.0.6. However, when you pull in scala-client 3.0.6, that upgrades the core-io dependency to 2.0.7 - which java-client 3.0.5 is not binary compatible with.
So as long as you keep matching your scala-client version to the java-version that is pulled in by transactions, you should be fine.