forked from hector-client/hector
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
372 lines (324 loc) · 24.2 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
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)
See object-mapper/CHANGELOG for HOM specifics
1.1-2
=====
DynamiCompositeType now supported by SerializingTypeInferer @mebigfatguy
RangeSlicesIterator for merged get_indexed_slices/range_slices functionality @thrykol
PersistenceProvider and EntityManagerFactory impls, switch to xbean for scanning HOM instead
of spring. https://github.com/hector-client/hector/pull/509 thanks to @rmannibucau for the patch
New RowCopy utility class does precisely what it says on the tin https://github.com/hector-client/hector/pull/513 @thrykol
Fix Issue (#540) so ThriftCfDef will handle adding ColumnDefinitions after constuction when there were none on constructor.
Iterator for SliceCounter https://github.com/hector-client/hector/pull/514 thanks to @thrykol
Huge pile of formatting fixes and test coverage by @edgurgel
Ability to specify impelementation of HClientFactory https://github.com/hector-client/hector/pull/533 thanks to @xedin
Key validation alias support on BasicColumnFamilyDefinition. https://github.com/hector-client/hector/pull/523 @thrykol
Column TTL now supported in ColumnFamilyTemplate API. https://github.com/hector-client/hector/pull/535 thanks to @jkowalewski
Support Double and Float directly. See https://github.com/hector-client/hector/pull/539 thanks to @feob
BooleanType and FloatType now supported in ComparatorType Thanks to @woolfel
CqlQuery now support version attribute. Thanks to @edwardcapriolo https://github.com/hector-client/hector/pull/547
Pure cassandra-based locking implementation. Thanks to @tnine and @patricioe for the effort. https://github.com/hector-client/hector/pull/550
SSL support. Thanks to @alexliu68 for the patch. See https://github.com/hector-client/hector/pull/548 for details.
Change PrefixSerializer to only raise the "unprefixed" error when the system really recognizes that the retrieved value has
no prefix. If the prefix is different, discard the value. Thanks to @scottganyo for the patch.
1.1-1
=====
add DynamicComposites to the list of types supported by SerializerTypeInferer
set the ClockResolution for all clusters in a static way #479
changed buildRingInfo to uses rpc_endpoint to build ringInfo instead of listen_address #486
Hector should support range queries that include indexed clauses (#474) thanks to jsotelo for the patch
1.1-0
=====
*** First release directly compatible with Apache Cassandra 1.1 ***
There has not been extensive testing done on this release yet. Though we do not anticipate any major issues, particularly given the
commitment of the Apache Cassandra team with maintaining compatibility, it is highly advised that you *thoroughly* test all your
code after any upgrade.
*** Maven coordinates have been changed to org.hectorclient from me.prettyprint (coordinates, not package names).
1.0-6
=====
set the ClockResolution for all clusters in a static way #479
changed storage_port from 7000 to 7070 so as not to conflict with a "normal" running cassandra instance on same machine
1.0-5
=====
************
*** We moved the repo to https://github.com/hector-client/hector thanks to @rantav for all his hard work and effort over the course of the
past two years on this project and hosting everything for as long as he did ***
************
Remove ExhaustedPolicy as it doesn't seem to be used anymore. This will probably break some folks' configuration - watch out for spring config!
Added listener framework for CassandraHostRetry service per issue #455 huge thanks to @elyrank
KeyIterator constructor now takes Serializer instead of AbstractSerializer as argument #449 thanks to @hzwaal for the patch
Fix round-tripping of empty String Component in Composite thanks to @jancona
Cleanup of generics and other warnings thanks to @normanmaurer see https://github.com/hector-client/hector/pull/391 for details
You can now specify an empty start key in IndexSlicePredicate thanks to @jordanlewis for the patch
Fix NPE in DoubleSerializer for nonexistent columns thanks to @amrik
1.0-4
=====
Made Composite Serializable
Added Composite to TypeInferringSerializer
Add start key to KeyIterator #419
Fix losing a host during Retry Down host service #439
1.0-3
=====
Additional utility methods on ComparatorType. Thanks to ash2k for the patch.
Remove libthrift dependency reference directly in favor of transitive reference from Apache Cassandra libs. Thanks to #jfarrell for the patch (#349)
Fix bytebuffer munge on SuperCfResultWrapper (#381)
Bunch of package and code cleanups from @normanmaurer
Add additional convinience methods to ColumnFamilyResult. Thanks to @amrik for the patch.
Don't check for ring membership if no hosts are alive. Thanks to Nick Bailey for the patch.
Fix NPE on NodeAutoDiscoveryService. Thanks to Matt Abrams for the patch (https://github.com/rantav/hector/pull/383)
Expose keyspace and columnFamilyName in SimpleCassandraDao (#395)
Support RangeSubSlicesCounterQuery and SubSliceCounterQuery. Thanks to @nlalevee for the code.
Operations effecting schema (OperationType#META_WRITE) no longer retry on timeout. Thanks to Chris Herron for the fix.
Change test instance gossip port to 7001 to not conflict with Cassandra defaults (#342)
Updated CassandraClusterTest to show correctly setting index_name field. Thanks to @quorg for pointing this out (#405)
1.0-2
=====
Add TopolyAware AutoDiscoveryService (#311)
Add Kerberos support (Experimental) (#296)
Remove unused fields in CassandraHostConfigurator - maxIdle, minEvictableIdleTimeMillis, timeBetweenEvictionRunsMillis (#244)
ColumnFamilyTemplate now supports indexed slices! Thanks to @jancona. https://github.com/rantav/hector/pull/315
Support getSubColumnsByName in HSuperColumn (#325)
Store authentication state on the ThriftClient. Thanks to @mahone. https://github.com/rantav/hector/pull/333
Improve performance of ColumnSliceImpl instantiation and HColumnImpl getName()/getValue() (#332)
Add relevant serializers to SerializerTypeInferer (#341)
Remove speed4j.properties from main/resources (#343)
Fix for NSEE being thrown on ColumnFamilyTemplate#queryColumns becuase hasNext was not being called before nexts
Fix multiple bytebuffer reading bug on SuperCfResult. Thanks to @sherman for the patch (#345)
Don't set replication_factor into strategyOptiosn for ThriftKsDef. (#358)
Clean up consistency level management in MutatorImpl. (#354)
EmbeddedServerHelper now picks up custom configuration file. Thanks to @thrykol. https://github.com/rantav/hector/commit/071717a4dd7bfde68970fbe11083a18ee838cacc
Column iterators now track their row count internally. Thanks to @shane. https://github.com/rantav/hector/commit/2bbcfdea9287c4ebc4bce31bb9647d7c738c8bab
Added newest features for Column family defitions to meta data API. Thanks to @ghinkle for the patch. (#359)
Efficiency tweaks for ColumnSliceIterator and IndexedSliceIterator. Thanks to @thrykol. For details, see: https://github.com/rantav/hector/pull/374
Better support for Composite keys. Thanks to @chiappone. For details, see: https://github.com/rantav/hector/pull/371
Fix issue-376 where HFactory#createCluster was not adding the created cluster to the internal map of clusters. (#376)
0.8.0-4
=======
Add durable_writes support. #293
Make sleep time when waiting for schema agreement customizable #302
Fix MutatorResult wrong result time. #273
Remove node from Retry Service that do not participate in the ring anymore #216
0.8.0-3
=======
Note!!! fix for issue #294 renamed PoolExhaustedException for HPoolExhaustedException and created
a new base exception for pool related exceptions called: HPoolRecoverableException.
Fix race condition in connection pool. https://github.com/rantav/hector/issues/257
Reduce default size of ByteBufferOutputStream to 256 from 8196 bytes, https://github.com/rantav/hector/issues/268
ObjectSerializer can take a custom ClassLoader, https://github.com/rantav/hector/issues/134
Move EmbeddedSchemaLoader and EmbeddedServerHelper into the hector-test module, https://github.com/rantav/hector/issues/223
- hector-core depends only on cassandra-thrift, not cassandra-all
- Remove dependencies on avro, high-scale-lib
Threads started by hector are daemon threads, https://github.com/rantav/hector/issues/220
Fixed speed4j setup - modified hector so it only uses speed4j.properties to configure logging. the logger
name must be of the form "hector-<cluster-name>". Updating wiki page as well.
Fix issue https://github.com/rantav/hector/issues/294.
Fix issue with non-rentrant mutators on ColumnFamilyTemplate hierarchy. See https://github.com/rantav/hector/issues/286
Close client on HInvalidRequestException and on HCassandraInternalException (issue-299)
0.8.0-2
=======
Synchronize on RR balancing policy counter
Added key_validation_class support on CfDef wrappers
Fixed issue with using correct timestamp on execution result which could manifest as order of magnitude differences in op timing in some cases
Added remove method to retry service, ensures that HConnectionManager.removeHost correctly pulls hosts from CassandraHostRetryService if configured. Addresses GH issue 216
Expose setters in ColumnFamilyDefinition iface
Added option to wait for schema agreements on cluster operations
Check for null on keys in a list. Addresses issue 221
Addressing issue 226 on gh where attempts to release on suspended pools will leak clients
Fixed issue with using BB serializer for BA serializer as pointed out by @bhuvan.rajt on ML
Wrapper api for op timers (makes current speed4j implementation plugable). The default logger is no a nulllogger, so op timing is off by default (sbridges)
Tweaks to retry down host logic including: immediate check when triggered, and retrying all downed hosts. See issue 238 for details (sbridges)
Fix potential race condition in numBlocked if an exception was thrown creating a thrift client (sbridges)
0.8.0-1
=======
CQL queries available via CqlQuery
Removed openjpa and JPA 2.0 targeted code; still using JPA influenced annotations.
Reset to the results of adding the pool to the connection manager. This could cause a pretty ugly issue where the host would just disappear if there was a failure adding it back after the successful test.
Fixed retry logic in the case of fail after one more try configuration. Also modifies some long standing (and I believe incorrect) behaviour of trying until successful on a timeout exception.
Adding recommended default configuration string for dynamic comparator
First cut of CqlQuery, loosened OrderedRowsImpl to hornshoe in results
CfDef.key_validation_class support (michaelsembwever)
Expose memtable throughput, operations, flush and key cache save period (Greg Hinkle)
Counter super slice support (Greg Hinkle)
Multiget Counter Slice and super slice (Greg Hinkle)
Support replicate_on_write setting for column families (Greg Hinkle)
0.7.0-31
========
Expose setters in ColumnFamilyDefinition iface
Added remove method to retry service, ensures that HConnectionManager.removeHost correctly pulls hosts from CassandraHostRetryService if configured. Addresses GH issue 216
Optionally block on schema agreement for cluster operations
Fix issue 224 with RR balancing policy (merge from master)
Addressing issue 226 on gh where attempts to release on suspended pools will leak clients
CassandraHostRetryService should retry all downed hosts when checking, not just the first host (sbridges)
0.7.0-30
========
Moved check for transport exception to where it will actually do something. Thanks to Jim Ancona for changes.
Added option for setting keepalive on the underlying socket. Defaults to false.
Updated logger level to more appropriate warn in HConnectionManager.
Slight changes to use Cluster class and definitions already defined to check for new nodes. Originally causing a problem when Cassandra security it turned on. Thanks to nneuberger1 for the patch.
Add ability to return a timestamp based on UUID.
Added HColumn timestamp signature changes from master. Thanks to Oleg Tsvinev for the patch.
Reset to the results of adding the pool to the connection manager. This could cause a pretty ugly issue where the host would just disappear if there was a failure adding it back after the successful test.
Fixed retry logic in the case of fail after one more try configuration. Also modifies some long standing (and I believe incorrect) behaviour of trying until successful on a timeout exception.
0.7.0-29
========
Huge contrib of template-method design pattern approach by David Cox. See m.p.c.service.template packageand testing coverage for such. Fans of SpringFramework's JdbcTemplate should give this a look (still work in progress though).
PHI accrural algorithm load balancing policy available. Thanks to Vijay for the patch.
Removed redundant shutdownHook registration in pooling services. Thanks to sbridges for the patient explanation.
Added setKeys/setColumnNames overloading with Collection type arguments in MultigetSuperSliceQuery/MultigetSubSliceQuery. Thanks to user rstml for the patch.
Fix potential bug with RR balancing policy on small clusters (https://github.com/rantav/hector/issues/186)
Added KeyIterator and StringKeyIterator utility classes (thanks to tkoop for the patch)
Support for consistency levels "TWO" and "THREE"
Added key_cache_save_period_in_seconds to column family creation (https://github.com/rantav/hector/issues/191)
Fix of result time for SC slice query (thanks to user tamalex for the patch)Additional serializers for primitive types, BigInteger and ASCII
Additional modifications to Mutator for working with super columns
Added describe_schema_version to Cluster interface
Dynamic composite comparators (see http://www.anuff.com/2011/02/indexing-in-cassandra.html and https://issues.apache.org/jira/browse/CASSANDRA-2231 for some background). Thanks to Ed Anuff and Todd Nine for a ton of work and testing
here.
0.7.0-28
========
Rethrow on HUnavailableException since we cannot satisfy the requested CL and never will be able to (hence futility of retrying)
ExceptionTranslator did not correctly handle poolExhausted exceptionCleanup of NonBlockingHashMap semantics and extraneous string creation after profiling sessio
Added the jul-to-slf4j bridge for catching dumb jmx logger leak
Initial cut of HColumnFamily wrapper added. Comments welcome.
First pass at HostTimeoutTracker: when configured, if a node throws a TimeoutException N times within X interval, suspend connections to the host for Y seconds (all configurable via CassandraHostConfigurator). This feature has not b
een heavily tested and is here to gather feedback. Use at your own risk.
Cleanup of some logging level stuff to generate less-scary (or no) log messages under standard operating procedure.
HSlicePredicate exposes some additional convinience methods for easier use
Added JAXB serializers thanks to GH user shuzang
Cleanup of OrderedSuperRows thanks to GH user alexism
Removed unmutability constraint on slice and orderedRow implementations. Thanks to GH user alexism
HColumnImpl now loosely wraps the underlying Thrift Column. Most applications should see a substantial reduction in GC overhead due to this
0.7.0-27
========
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.
0.7.0-26
========
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. https://github.com/rantav/hector/issues#issue/136 (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. (https://github.com/rantav/hector/issues/issue/137)
0.7.0-25
========
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
0.7.0-24
========
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 https://github.com/rantav/hector/wiki/Virtual-Keyspaces
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
0.7.0-23
========
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
0.7.0-22
========
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
0.7.0-21
========
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)
0.7.0-20
========
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
0.7.0-19
========
Fix issue http://github.com/rantav/hector/issues#issue/74 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)
0.7.0-17
========
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()
0.6.0-15
========
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 (http://github.com/rantav/hector/issues#issue/11 and http://github.com/rantav/hector/issues#issue/7 and http://github.com/rantav/hector/issues#issue/29)
Add an exception hierarchy to wrap transport and general cassandra API exceptions http://github.com/rantav/hector/issues#issue/32
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, http://github.com/rantav/hector/issues/issue/37/#comment_278773
Fix bogus doubly locked initialization in CassandraClientPoolFactory
Fix http://github.com/rantav/hector/issues/issue/48 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. http://github.com/rantav/hector/issues/issue/47
Fix http://github.com/rantav/hector/issues#issue/50 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
0.6.0-14
========
Add getRangeSuperSlices http://github.com/rantav/hector/issues/#issue/38
Add Command.execute that accepts a configurable FailoverPolicy
Improve maven build file
0.6.0-13
========
Fix duplicate host entries and two connection pools to the same host http://github.com/rantav/hector/issues/closed#issue/37
Make loading hectorLog4j.xml optional, controlled by system property com.prettyprint.cassandra.load_hector_log4j http://github.com/rantav/hector/issues/closed#issue/36
Fix - JMX counter NumActive isn't reporting a correct num http://github.com/rantav/hector/issues/closed#issue/33
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
0.6.0-12
========
Timestampes are currently in milliseconds, should be microseconds http://github.com/rantav/hector/issues/closed#issue/28
getPackage() MAY return a null at JmxMonitor constructor. http://github.com/rantav/hector/issues/closed#issue/26
Change default consistency level to QUORUM from DCQUOROM http://github.com/rantav/hector/issues#issue/30