Fetching contributors…
Cannot retrieve contributors at this time
162 lines (136 sloc) 9.42 KB
Changes by version:
0.7.0 stands for cassandra's 0.7.0 version.
-22 stands for hector's version
Versions above 0.7.0-17 work well with cassandra's 0.7.* (after 0.7.0-beta2)
Execution time is now actually in micro seconds. Thanks to several folks for pointing this out.
Added IO stream mutators. Thanks to Norman Maurer for the pull request.
Added method to HFactory for safe shutdown of cluster
Added suspend/unsuspend operations to HConnectionManager, operations for suh in JMX
Cleanup of numActive counter on ConcurrentHClientPool. Could cause negative results under some high-load situations. Thanks to Yang Yang for the tip.
fix NPE with poolExhaustedException. Thanks to Yang Yang for the tip
Fixed issue with ttl not being set on result columns. Thanks to ML user Kallin for the heads up.
Fix issue with NPE in ThriftColumnDef when a column name was declared with no index type (thanks to Steve Willcox for the heads up)
Mutator has easier row level deletion methods
Fix potential race condition in ConcurrentHClientPool with large number of threads. (Thanks to @masseyke for the test case)
LeastActive policy updated to shuffle before selection. This spreads load out better among pools in low to moderate traffic environments (ie. when ConcurrentHClientPool#getNumActive are all equal).
Fix NPE in checking that cassandraHostRetryService is turned when host is being marked down (thanks to ML poster Shimi for bug report)
A CassandraClientMonitor instance is now created per cluster to make JMX integration with multi-cluster setups much easier. (
Fix potential underflow issue with IntegerSerializer and small ints comming back from Cassandra in two bytes
Fix issue with RR Load balancing policy that cause ArrayOutOfBounds.. in some situations
Fixed issue with null keyspaces and credentials in HConnectionManager (via Michael Moores)
Added class-level default for failoverPolicy
Rudimentary (very much so) JPA 2.0 support for save and load via openjpa
Ligthweight ORM for JPA 1.0 annotations (additional improvements to BTodd's hector-object-mapper merged in)
Some cleanup of bytebuffer handling in serializers
Initial cut at virtual keyspaces (aka client-level multi-tenancy), see
CassandraHostConfigurator and related are now all correctly serializable (patch by Thor Carpenter)
Added add/remove CassandraHost capability to CassandraClientMonitor (thanks to David Boxenhorn for poiting out it was missing)
CassandraHostRetryService default queue size now defaults unbounded
Initial import of BToddB's hector-object-mapper as object-mapper module
Object mapper ported over to JPA annotations and EntityManager (very redimentary support)
Fix issue with createKeyspace requiring additional column info
Massive changes to pom structure courtesy of Stephen Connolly to facilitate inclusion into maven central repository.
Small tweaks to HConnectionManager courtesy of Benoit Perroud
Collection conversions in AbstractSerializer use the size of the provided collection for initialization. Patch courtesy of Benoit Perroud.
Treat HUnavailableException the same as HTimeoutException
Fix issue with LeastActiveBalancingPolicy that favoured same host repeatedly
Define ClockResolution as an Interface to allow client to define their own implementations
Added TimeUUID support (me.prettyprint.cassandra.utils.TimeUUIDUtils)
Added updateColumnFamily to Cluster
Shorterm fix for catching InvalidRequestException and handling it correctly for a bootstraping node
CassandraHostConfigurator is now serializable
Split the project to hector-core
Added removeCassandraHost on HConnectionManager for graceful shutdown of a pool
Configuration of load balancing policy is now done on CassandraHostConfigurator
KnownHosts and per-pool stats are once again available via JMX
Minor logging tweaks to make logging levels more appropriate
Added overloaded version of createColumn (contributed by Michael Moores)
Added authentication support (contributed by Jim Ancona)
Cleaner abstraction for schema modifications (contributed by Peter Harrison)
- ddl package added
- wrapper classes and interfaces for abstracting protocol
RangeSlicesQuery now supports setRowCount for limiting results to a number of rows
Fix issue with fix suggested by Patricio Echague
CassandraHostRetry service will retry downed hosts in a background thread at the interval specified on CassandraHostConfigurator (on by default at 30sec interval)
Refactoring of the connection pooling innards to fix epic race condition on failover. This includes but is not limited to:
- Removal of classes effectively matching the pattern CassandraClient* from the service package
- Command is gone. It was no longer needed and was more confusing than anything else
- Pooling logic has been stress tested by a neutral third party (no, really!)
Upgrade to thrift 0.5 to match Cassandra (it caught us by surprise as well).
The system_rename_* methods were removed matching removal of such in Thrift API
Microsecond level granularity is now the default
NodeAutoDiscoverService will periodically look for new hosts on the ring and add them (off by default)
Add CountQuery, SuperCountQuery and SubCountQuery
Move all the API stuff to me.prettyprint.hector.api.*. Extract interfaces and prepare the ground for more avro good.
- Move all the queries and extract their interfaces
- Rename KeyspaceOperator and extract a Keyspace interface from it
Rename a few exceptions to begin with HSomething so they are hard to unintentionally mix with their thrift doubles.
Bug fixes:
CassandraClientPoolByHostImpl can throw NoSuchElementException
KeyspaceImpl.toString returns super.toString()
API V2 has no means of getting all columns from a row.
KeyspaceOperator throws NPE that masks real exceptions
Timestamp (and Clock in 0.7.0) are not set on HColumn in the constructor
Friendlier API and spring integration
Error in failover - incorrect operation when borrowClient throws an
batchMutate doesn't work with null predicate in deletion. Cannot batch-delete rows.
getSuperColumn() does not return null
KeyspaceImpl.getSuperColumn() should use cassandra.get() and not cassandra.get_slice()
Add a few more public settings to pass over to GenericObjectPool: lifo, minEvictableIdleTimeMillis and timeBetweenEvictionRunsMillis (contributed by B. Todd Burruss)
Remove some unused meta calls from CassandraClient, such as getConfigFile and getStringProperty
Make the calls of other meta API go through CassandraCluster and by that use an improved version of them in thrift and failover ( and and
Add an exception hierarchy to wrap transport and general cassandra API exceptions
Make HectorException extend RuntimeException
Add the port number to be part of the cassandra host identifier so that many cassandra instances can be connected from a single hector client,
Fix bogus doubly locked initialization in CassandraClientPoolFactory
Fix KeyspaceImpl.getSuperColumn() should use cassandra.get() and not cassandra.get_slice()
Allow CassandraClientPool to provide settings from CassandraHostConfigurator to new hosts if it was configured from such.
Fix getSuperColumn() does not return null
New and fancy API. We call this API v2 beta b/c we want to collect feedback from the commumnity before finalizing it
Add getRangeSuperSlices
Add Command.execute that accepts a configurable FailoverPolicy
Improve maven build file
Fix duplicate host entries and two connection pools to the same host
Make loading hectorLog4j.xml optional, controlled by system property com.prettyprint.cassandra.load_hector_log4j
Fix - JMX counter NumActive isn't reporting a correct num
Chagne the name of the perf4 logger to be me.prettyprint.hector.TimingLogger
Fix duplicate releases of clients when failing over to next host and connection leaking (no bug, was introduced by recent refactors)
Improve failover - if the current host isn't in the list of known hosts, just failover to any random known host, don't give up
Fix perf4j logger name so perf stats will actually work
added overloaded remove for user specified timestamps
Add @deprecated to getRangeSlice
Add CassandraClientPool.getMbean
Make Keyspace.createTimestamp public
Change default DEFAULT_MAX_IDLE to -1
Timestampes are currently in milliseconds, should be microseconds
getPackage() MAY return a null at JmxMonitor constructor.
Change default consistency level to QUORUM from DCQUOROM