14 Patch |
178921d6b61dd9f09527245368012aec950627e6,
d24426d5517634d2e1b9ef11d6fce7b9574d454f,
ef8e794e628b0bf976ce6b92066392f5ff8337f8,
b6bbb37b4c11ae26c0a0eaba4b09a40de9017bfa,
0b2fd283888d6f2a17b2259777cc312c8506f7b8,
9e418c02f6fce5b47755911b23636c318b029af5,
81c86d77381466f85a2fcb2197acffeb5c68a889,
ec3b91462e4c1386d37af0d995bb7877ada3292c,
9f0924d35252e4fcbbc21b0914e80c23e5a688e8,
abddf98fe1904808357ca7d0244a407da8f0c920,
5abf8446a1c800833f63867d12d61ae656c0f028,
d1eb33572dbc7a914c3a10c74e7da721670e3bb6,
d93b3b69ad5d7e5406e9d40f70592489dd1d565a,
4ce212b9a3c73e29ecff93c0301cc1354e3dc22e |
178921d6b61dd9f09527245368012aec950627e6 | Author: Justin Corpron <jncorpron@gmail.com>
| 2016-05-07 19:16:02-07:00
Notify the HostSelectionPolicy of the partioner
Fixes #724; adds back the call to SetPartitioner on the session's
HostSelectionPolicy. This is mostly needed so that the token
aware policy initializes and updates its token ring representation.
d24426d5517634d2e1b9ef11d6fce7b9574d454f | Author: Justin Corpron <justin@retailnext.net>
| 2015-07-15 15:50:28-07:00
Improve support for complicated cassandra schemas.
In some schemas there may be "partition_key" type columns returned in the V2
protocol metadata which have the same component index; in our case we have
a couple column families with aliased columns "KEY" and "key" for historical
reasons. This change is based on the DataStax driver's behavior for columns
with the same component index, which prefers the last column in order defined
for that component index; the consequence of this behavior is that other column
names defined for the same component index will not be identified as part of a
routing key.
Also, "compact_value" has been added as a column kind/type.
ef8e794e628b0bf976ce6b92066392f5ff8337f8 | Author: Justin Corpron <justin@retailnext.net>
| 2015-04-16 13:41:05-07:00
Improved unit test coverage and function documentation.
- Added document lines for test functions
- Improved unit test coverage for token.go, metadata.go
- Added unit tests for policyConnPool in connectionpool.go, more work is needed here in the future
- Fixed a typo in connectionpool.go
b6bbb37b4c11ae26c0a0eaba4b09a40de9017bfa | Author: Justin Corpron <justin@retailnext.net>
| 2015-04-09 13:53:22-07:00
First round of code review fixes
- Changed roundRobinHostPolicy to increment the policy's round robin position
for each host iteration instead of iterating locally to the iterator
- Added documentation to NewPolicyConnPool
- Added "dial" operation errors to those not logged when hostConnPool is
connecting to a node
- Only rebuild the token ring of a token aware host selection policy when
the partitioner class changes
- Simplify the code in the token aware selection policy host iterator
- No need to create a new *Conn slice versus using nil in a new round robin
connection policy
- the tokenRing functions now handle the case of the tokenRing pointer
being nil internally
- removed connectionpool_systems_test files until their tests can be successfully integrated into the integration.sh and cassandra_test.go
- Introduced SetHosts interface to hold the common definition of the SetHosts function for ConnectionPool and HostSelectionPolicy. ConnectionPool updated to embed SetHosts and HostSelectionPolicy updated to embed SetHosts and SetPartitioner
- Changed the locking in hostConnPool to use a read-write lock which should allow for concurrent calls to Pick for that same struct
- Added random variance to the sleep time after attempting to fill a hostConnPool which should hopefully avoid any synchronization between multiple gocql clients on a node which has become unreachable
9e418c02f6fce5b47755911b23636c318b029af5 | Author: Justin Corpron <justin@retailnext.net>
| 2015-04-07 16:30:48-07:00
Enhancements to integration.sh for ease-of-use in development
- Replaced the sed commands with usage of the --jvm_arg parameter of 'ccm create' for GC tuning
- Added 'ccm remove test' command as an optional step to remove the previous test cluster if it
already exists
- Changed the 'ccm clear' command to 'ccm remove'
ec3b91462e4c1386d37af0d995bb7877ada3292c | Author: Justin Corpron <justin@retailnext.net>
| 2015-04-06 11:40:50-07:00
Resolve second round of code review issues:
- Do not export tokens, partitioners, or token ring
- Resolve typos in murmur3 algorithm
- Add more tests from other murmur3 implementations
9f0924d35252e4fcbbc21b0914e80c23e5a688e8 | Author: Justin Corpron <justin@retailnext.net>
| 2015-04-03 22:27:27-07:00
Resolve code review issues
- Add reset timer to benchmark
- use const block for more than one consts
- Change embedded big.Int within RandomToken to RandomToken being a type def of big.Int directly
5abf8446a1c800833f63867d12d61ae656c0f028 | Author: Justin Corpron <justin@retailnext.net>
| 2015-03-30 09:19:17-07:00
Resolve first code review issues
- In routingKeyInfo(string), refactored branching of normal path so that it is mostly on the first indent.
- Added error return value to routing key functions as appropriate and documented instances where errors
are returned and when nil may be returned when no error occurs.
- Added testing of type information returned in routingKeyInfo structs
d93b3b69ad5d7e5406e9d40f70592489dd1d565a | Author: Justin Corpron <justin@retailnext.net>
| 2015-03-09 00:38:13-07:00
Add keyspace name as a string parameter to the KeyspaceMetadata function for Session since the keyspace name is optional in the ClusterConfig.
- Also removed unused & untested column metadata kind constants CONSTANT_VALUE and STATIC
d1eb33572dbc7a914c3a10c74e7da721670e3bb6 | Author: Justin Corpron <justin@retailnext.net>
| 2015-02-04 15:20:54-08:00
Added routing key computation (with override) to Query
- Added routingKeyInfo(string) function to Session which is a cached calculation of the query
value indexes to routing key indexes with type info
- Added RoutingKey([]byte) function to Query which sets the routing key bytes for the query
- Added GetRoutingKey() []byte which returns the routing key for the query; if the routing
key is not set explicitly with RoutingKey([]byte) then the routing key is constructed using
the routing key info retrieved from Session
0b2fd283888d6f2a17b2259777cc312c8506f7b8 | Author: Justin Corpron <justin@retailnext.net>
| 2015-01-29 10:56:48-08:00
Added token aware connection pool implementation
- new implementation of ConnectionPool based on separate host and connection selection policies
- new round-robin and token-aware policies for connection pool
- moved HandleError outside of ConnectionPool interface to a ConnErrorHandler interface to
decouple ConnectionPool from Conn while maintaining backwards compatibility
- modified ring discovery to pass the partitioner value onto the connection pool via
a new optional SetPartitioners interface
- integration test for token aware connection pool
- added a systems test of connection pool behavior when cluster nodes shutdown and restart
4ce212b9a3c73e29ecff93c0301cc1354e3dc22e | Author: Justin Corpron <justin@retailnext.net>
| 2015-01-27 13:38:07-08:00
Add KeyspaceMetadata() func to Session which returns schema information
- Implemented functions for retrieving keyspace, table, and column
schema metadata from the system schema tables
- Implemented a function to reason about schema metadata in order to
determine the partition key and clustering columns for a table
- Implemented a cassandra type parser for parsing information about
validator and comparator definitions in table and column schema metadata
- Implemented schemaDescriber, an analog to ringDescriber for schema metadata
- Added KeyspaceMetadata() function to Session
- Added Justin Corpron to AUTHORS