Just my 2 cents

Because of the tremendous breaking changes in terms of API as well as
public facing classes (QueryBuilder for ex) I have stopped the development
of the Achilles framework.

Migrating to the 4.x version would require almost the complete rewrite of
the framework, an effort which I cannot afford to dedicate to (the
framework is 7 years old now). I also advise many customers of mine to
adopt a wait & see strategy with regards to the new drivers because of the
amount of application rewrite, due to the aforementioned public-facing
classes changes

Regards

Duy Hai DOAN

On Thu, Oct 29, 2020 at 2:06 PM Johnny Miller <joh...@digitalis.io> wrote:

> Joshua - thanks for the update, I have found the ASF slack channel
> (#cassandra-cep-drivers-donation) and google doc (
> https://docs.google.com/document/d/1e0SsZxjeTabzrMv99pCz9zIkkgWjUd4KL5Yp0GFzNnY/edit#).
> Will be watching it closely.
>
> In terms of the functional changes brought into the driver with 4.x the
> downgrading CL has always been a controversial feature, but the failover to
> remote DC being removed - I am curious to understand why?
>
> Thanks,
>
> Johnny
>
> On Thu, 29 Oct 2020 at 13:53, Joshua McKenzie <jmcken...@apache.org>
> wrote:
>
>> That's an immense amount of incredibly useful feedback Johnny. Thanks for
>> taking the time and energy to write all this up.
>>
>> I work with some of the engineers who authored these changes in the
>> driver and have brought this thread to their attention. The authors have
>> offered the driver as a CEP donation to the C* project so we will have one
>> in tree which should give a clear path to fixing some of these API issues
>> as well as the loss of functionality on a major.
>>
>>
>> On Thu, Oct 29, 2020 at 8:37 AM, Johnny Miller <joh...@digitalis.io>
>> wrote:
>>
>>> Hi Everybody,
>>>
>>>
>>> We wanted to reach out to the community around the v4 changes in the
>>> DataStax Java driver and gauge people's opinions on some of the changes.
>>> DataStax have done a tremendous job over the years on the Cassandra drivers
>>> and contributing to this community. However, we are currently struggling to
>>> adopt the latest driver due to these changes.
>>>
>>>
>>> We have been working on a project to upgrade an application from v3 to
>>> v4.9 of the driver and have encountered major changes between these
>>> versions.
>>>
>>>
>>> We have observed the latest version of the driver contains many more
>>> DataStax Enterprise (DSE) specific code, and this is not surprising as
>>> DataStax have been generous to build it for the Cassandra community.
>>>
>>>
>>> From our understanding, the DSE specific code must be included even if
>>> you are unable to use it or require it. For example, in CqlSessionBuilder
>>> class which is the main entry point into the driver,  there are APIs
>>> relating directly to DataStax Enterprise non-OSS functionality, their cloud
>>> DBaaS etc.. e.g.
>>>
>>>
>>> - withApplicationName (
>>> https://docs.datastax.com/en/drivers/java/4.9/com/datastax/oss/driver/api/core/session/SessionBuilder.html#withApplicationName-java.lang.String-
>>> )
>>>
>>> - withApplicationVersion (
>>> https://docs.datastax.com/en/drivers/java/4.9/com/datastax/oss/driver/api/core/session/SessionBuilder.html#withApplicationVersion-java.lang.String-
>>> )
>>>
>>> - withCloudProxyAddress (
>>> https://docs.datastax.com/en/drivers/java/4.9/com/datastax/oss/driver/api/core/session/SessionBuilder.html#withCloudProxyAddress-java.net.InetSocketAddress-
>>> )
>>>
>>> - withCloudProxyAddress (
>>> https://docs.datastax.com/en/drivers/java/4.9/com/datastax/oss/driver/api/core/session/SessionBuilder.html#withCloudSecureConnectBundle-java.io.InputStream-
>>> )
>>>
>>>
>>> plus more.
>>>
>>>
>>> All of these are sitting under the com.datastax.oss package - not the
>>> com.datastax.dse package.
>>>
>>>
>>> Additionally the reference.conf for the default driver settings contains
>>> a large number of DSE specific options:
>>>
>>>
>>> https://github.com/datastax/java-driver/blob/4.9.0/core/src/main/resources/reference.conf
>>>
>>>
>>> We would like to have seen this implemented in a subclass of the
>>> CqlSessionBuilder eg. DataStaxCqlSessionBuilder and the conf split into two
>>> separate config files.
>>>
>>>
>>> Additionally, the structure of the library is such that it is bundling
>>> all of the DSE driver code with the non-DSE driver code eg. graph, search
>>> etc. We would also like to have seen DataStax to have implemented it as
>>> separate libs and use a dependency on an OSS only lib in the datastax
>>> specific lib for the shared functionality.
>>>
>>>
>>> It would be great to be able to only take in the dependencies and code
>>> needed for Apache Cassandra and not the commercial products around it.
>>>
>>>
>>> However, the above observations are trivial compared to the two core
>>> features of the driver that seem to have been deprecated and we would like
>>> your opinion.
>>>
>>>
>>> 1 - No more failovers to remote-DC
>>>
>>> Previous versions of the driver allowed the driver to failover to a
>>> remote DC (if you wanted) in the event of losing access to the local DC.
>>> This is no longer the case.
>>>
>>>
>>> See:
>>> https://docs.datastax.com/en/developer/java-driver/4.9/manual/core/load_balancing/#default-policy
>>>
>>>
>>> What this means is either:
>>>
>>> a - re-implement this - not trivial
>>>
>>> b - initialise multiple instances of the driver in your JVM - not
>>> recommended by DataStax and we have observed some issues when you do this
>>>
>>> c - Address the problem via infra e.g load balancer fronting a local
>>> service connecting to local Cassandra DC along side a passive local service
>>> connecting to the remote Cassandra DC
>>>
>>> d - stop the entire applications/Cassandra stack in the DC if Cassandra
>>> becomes unavailable to the applications in this DC for any reason.
>>>
>>>
>>> Not a trivial change to take on, and in our humble opinion undermines
>>> one of the greatest benefits of Apache Cassandra where your applications
>>> "just keep working". We have seen many situations where this has been one
>>> of the core architecture principles for adopting Cassandra and forms part
>>> of the signed off and agreed operational acceptance testing on platforms.
>>>
>>>
>>> The latest driver will not be able to retain this architecture and it
>>> will be difficult for certain organisations to adopt and be current with
>>> the latest driver.
>>>
>>>
>>>
>>> https://docs.datastax.com/en/developer/java-driver/4.9/manual/core/load_balancing/
>>>
>>> vs
>>>
>>>
>>> https://docs.datastax.com/en/developer/java-driver/3.9/manual/load_balancing/
>>>
>>>
>>> 2 - No more changing consistency on retries
>>>
>>> Although this has been a controversial feature, we know quite a few
>>> users of this feature.
>>>
>>>
>>> Removing this in v4.9 of the driver essentially breaks those
>>> applications and it is not possible to implement this through a custom
>>> retry policy as the driver RetryDecision is now a String enum (
>>> https://docs.datastax.com/en/drivers/java/4.9/com/datastax/oss/driver/api/core/retry/RetryDecision.html)
>>> vs v3.9 (
>>> https://docs.datastax.com/en/drivers/java/3.9/com/datastax/driver/core/policies/RetryPolicy.RetryDecision.html)
>>> where more complex choices could be bubbled up to the driver around the
>>> consistency to retry on. We looked into how we could simulate the old retry
>>> behaviour using the latest driver and it would require non-trivial code
>>> updates within the client application - particularly if the asynchronous
>>> features are leveraged.
>>>
>>>
>>> Also, the default settings for the driver has remote connections set to
>>> 1 -
>>> https://docs.datastax.com/en/developer/java-driver/4.9/manual/core/pooling/#configuration
>>> We are not quite certain the reason or think of a scenario when this is
>>> utilised as local connections are only possible?
>>>
>>>
>>>
>>> https://docs.datastax.com/en/developer/java-driver/4.9/faq/#where-is-downgrading-consistency-retry-policy
>>>
>>>
>>> We look after many DataStax / Cassandra clusters and these changes in
>>> the latest driver changes have left us scratching our heads.
>>>
>>>
>>> We would be interested in hearing your thoughts on these observations.
>>>
>>>
>>> Thanks,
>>>
>>>
>>> Johnny
>>>
>>>
>>>
>>>
>>> --
>>>
>>> Johnny Miller
>>>
>>> Co-Founder & CTO
>>>
>>> https://digitalis.io <http://digitalis.io/> | Work: +44 20805023721|
>>> Mobile: +352 621159920
>>>
>>>
>>> --
>>>
>>> The information contained in this electronic message and any attachments
>>> to this message are intended for the exclusive use of the addressee(s) and
>>> may contain proprietary, confidential or privileged information. If you are
>>> not the intended recipient, you should not disseminate, distribute or copy
>>> this e-mail. Please notify the sender immediately and destroy all copies of
>>> this message and any attachments. WARNING: Computer viruses can be
>>> transmitted via email. The recipient should check this email and any
>>> attachments for the presence of viruses. The company accepts no liability
>>> for any damage caused by any virus transmitted by this email.
>>> www.digitalis.io
>>>
>>
>>
>
>
> --
>
> The information contained in this electronic message and any attachments
> to this message are intended for the exclusive use of the addressee(s) and
> may contain proprietary, confidential or privileged information. If you are
> not the intended recipient, you should not disseminate, distribute or copy
> this e-mail. Please notify the sender immediately and destroy all copies of
> this message and any attachments. WARNING: Computer viruses can be
> transmitted via email. The recipient should check this email and any
> attachments for the presence of viruses. The company accepts no liability
> for any damage caused by any virus transmitted by this email.
> www.digitalis.io
>

Reply via email to