Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[wip] Upgrade java dse driver to 2.x #17

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

landim
Copy link

@landim landim commented Jul 8, 2019

Updating to java dse driver 2.x

absurdfarce added a commit that referenced this pull request Dec 3, 2019
Big chunks of this are based on/copied wholesale from previous work done by Arthur Landim (#17)
absurdfarce added a commit to absurdfarce/gatling-dse-plugin that referenced this pull request Dec 4, 2019
Big chunks of this are based on/copied wholesale from previous work done by Arthur Landim (datastax#17)
absurdfarce added a commit that referenced this pull request Mar 24, 2020
* Not sure how, but somehow I missed the commit that, you know, changed the driver version we use 🤦

* Picking up some low-hanging fruit, mostly import changes

* Some more low-hanging fruit, mainly conversions to use the shaded Guava

* Fixing a package rename that was missed in the earlier round

* Convert usages of Guava's FutureCallback (which aren't actually being used in future-handling code) to a generic callback trait

* Trying to fix as much of the base CQL stuff as possible.

Big chunks of this are based on/copied wholesale from previous work done by Arthur Landim (#17)

* Added explicit bounded Statement type to DseCqlAttributes. This type propogates through the statement/attribute level but doesn't make it up to the action level (since the actions don't seem to care about the underlying Statement type their executing... or at least they don't so far).

* A few minor fixes

* Cleaning up PagingState references, a few other minor cleanups

* A few miscellaneous fixes

* Removed unavailable methods for accessing tried and queried hosts and replaced with accessor for coordinator node. Also cleaned up a fair amount of DseResponse.

* Most of the core graph refactoring

* Fixes to DseResponseHandler... and a few other miscellaneous fixes

* Updates to Cql/GraphRequestAction to match other work done elsewhere in these changes. Still need to update the bits around the explicit interaction with the driver.

* A bit of refactring to remove some of the larger fn definitions in the action impls

* Fixing some weird import ordering issues

* Conversion to use a builder rather than a (template) statement in CqlRequestAction... should make supporting the setting of various options from DseCqlAttributes considerably easier.

* Convert graph infrastructure to use builders coming off of DseSession rather than Statement directly

* Convert CqlPreparedStatementUtil to work with Bindable instances rather than statements specifically.  Facilitates
conversion to builders generally.

Also converted CQL statements to use builders in order to address immutable statement classes

* Cleaning up some type stuff

* Converted CQL props to use only what's actually supported on the driver now.  Still need to do the same for graph.
Some things have moved into driver configuration, most notably the retry policy.

Also simplified the DseResponse API.  Primary accessor here is for the (Graph|Async)ResultSet... these vals can then
be converted to Seqs using ResultSetUtils and managed via Scala's collection API.  Preserved as many of the existing
checks as possible mainly for backward compatibility; going forward many users would migrate to a Seq-based impl.

The DseResponse API changes were (largely) a result of the distinction between ResultSet and AsyncResultSet in the 4.x
driver.

* Converted graph props to include only what's supported on the driver now.

* Converting from GraphResultSet to AsyncGraphResultSet

* Simple impls of Iterators for async RS impls

* Fixing up some type things

* Initial work on spec fixes

* Code review feedback

* Consolidating check API into something which exposes the various ResultSet impls only.  Previously defined checks
can now be implemented as transforms off of the ResultSet instance via fns defined somewhere.

* More change from code review

* Upgrading to new cassandra-unit which includes 4.2.x driver support)

* Fixing a few tests

* Specs should at least compile now

* Base compilation now succeeds... on to actually fixing tests

* Fixes for various spec failures.

Don't try to create mocks for Durations... it makes them ANGRY!

* Fighting with mocks is awesome

* All non-cassandra-unit specs should be passing now

* Various test fixes.  Includes a fix to get cassandra-util tests running again; new version of cassandra-util
calls initSession() when trying to retrieve a session from a (possibly not yet initialized) embedded instance.
As a result our old pattern of only creating the embedded instance if the session is null was bound to fail.
Since we're creating the instance in an object anyway it seems safe to do without the guard.

* CqlPreparedStatementUtil spec now passes!

* Explicitly specify traversal source for graph queries.  This doesn't actually matter in practice since cassandra-unit
only runs these simulations against a base C* instance which won't understand graph queries anyway.  Still, I'm including
it here in case this situation should change.

* At long last... we have a clean run of tests!

* Removing sbt changes that were accidentally committed

* cassandra-unit released an official 4.x release while work was ongoing

* Shift to an API based on DataType rather than ints coming off of getProtocolCode()

* Upgrade to unified driver

* Fixing compile warnings re: unchecked types due to type erasure

* Replace DseSession with CqlSession refs

* Changing _all_ refs to DseSession to CqlSession instead

* Code review feedback

* Fixing default DC impl + cleaning up handling of memoized Sessions

* Fixing exception messages

* Don't bother going to the iterator... just use what Iterable gives us

* Added option to set idempotecy based on an existing boolean val

* Addressing PR feedback

* More review feedback

* Code review feedback

* More code review feedback

* Shifting away from companion objects and towards implicit vals

* Adding docs about the new check API

* Re-adding support for per-request proxy auth

* Some more code review feedback

* Removing support for explicit specification of collection classes in the Gatling session from prepared statement support.
Olivier pointed out that the prepared statement itself can serve as a source of truth for type info here.

* Driver version bump to 4.5.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant