forked from OpenTSDB/asynchbase
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
396 lines (329 loc) · 18.1 KB
/
NEWS
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
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
AsyncHBase - User visible and noteworthy changes.
This project uses Semantic Versioning (see http://semver.org/).
* Version 1.8.2 (2018-05-19)
This is a bug fix release with one beta feature.
- Fix a possible issue with the security config when spaces are present in the
authentication type.
- Add beta support for split-meta from HBASE-11288 for large, multi-tenant
clusters. The table names may change in the future.
- Auto-detect HBase 2.0 by catching an exception thrown when getClosestRowOrBefore
is called. HBASE-20237.
- Log the version setting, min and max timestamps in Scanners.
- Add CallQueueTooBig retry handling in the RegionClient without NSREing.
* Version 1.8.1 (2018-03-18)
This is a bug fix release.
- Revert locking in an RPC to synchronizing on the key instead of the entire
object as well as setting the suspend probe flag to volatile.
- Fix GetRequests where the family was masked and immutable after being set.
- Fix setting the scanner reverse flag in the setReversed() setter.
Previously when called it would only set the flag to `true`.
- Add RegionTooBusyException to allow for retries when newer versions of HBase
send this exception.
- Fix processing of encoded (private) RPCs and catch + log exceptions during
SASL negotiation.
- Add a configuration flag 'hbase.meta.scan' to switch meta lookups to
use a reverse scan when finding tables for compatibility with HBase 2.x
where the old method of getting the closest row was disabled.
- Fix an issue with AssertionErrors being thrown when a multi-action RPC
had an exception of a type that didn't implement the make() method.
- Fix an issue with multi-actions sent to HBase 1.31 an later where the
request was sorted by row key so that responses no longer matched the
request order. Now we sort by row key as well.
Noteworthy bug Fixes:
* Version 1.8.0 (2017-06-09)
This is feature release with new APIs and behaviors.
New Features:
- Support HBase 1.3.0 and later where scanner behavior changed.
- Add optional support for buffered AtomicIncrement calls to bypass the WAL
for quicker writes.
- Add an API for writing AtomicIncrements over multiple columns in a single
RPC.
- Add the MultipleColumnPrefixFilter.
- Add a "multi-get" API that allows for batching GetRequests and sending them
in a single request. Useful if the client wants to fetch a number of
disparate rows when scanning would be less efficient.
- Support for reverse scanning
* Version 1.7.3 (2017-06-09)
This is a bug fix release.
Noteworthy bug Fixes:
- Properly handle IPV6 addresses in the RegionClientPipeline.
- Avoid a deadlock when calling the RegionClient.toString() method.
- Avoid a synchronization deadlock handling NSRE probes.
* Version 1.7.2 (2016-09-17)
This is a bug fix release.
Noteworthy bug Fixes:
- Fix a race condition where messages in the NSRE queue could be stuck and
never retried properly. This will help region server crash recovery.
- Fix a bug in batched RPCs where, on exception, the batch RPC itself was
returned in the exception instead of the individual RPCs.
- Changed watermark variables to integers instead of shorts to avoid
overflows when set to values over 32K.
- Added retries of CallQueueTooBigExceptions. These still need to avoid
flushing the region cache but at least they'll be retried.
- Fix calls to scanner.setFamilies() where NPEs were being thrown.
- Retry RPCs on RegionServerAbortedException, ServerNotRunningYetExceptions
and RegionServerStoppedExceptions.
- Fix CompareAndSetRequests so they serialize timestamps as well as the data
to target specific versions.
- Update the protobuf compiler plugin for Maven.
* Version 1.7.1 (2016-02-10)
This is a bug fix release.
Noteworthy bug Fixes:
- Fix a regression where RPCs from pre-0.96 HBase clusters were not parsed
properly when large responses were split across packets. RPC timeouts were
not handled properly either and now they are.
* Version 1.7.0 (2015-09-11)
This release adds support for secure HBase installations, more filters and
greater configuration.
New public APIs:
- The Config object handles configuration of the client and can be set
manually or it may load a list of settings from a properties file.
- Introduction of AppendRequest to allow for appending data to the value
of a column in HBase. Appends can be buffered similar to PutRequests.
- Introduction of Kerberos and simple authentication support against HBase
region servers. Configuration is similar to the HTable client.
- Introduction of locateRegions() and RegionLocation similar to HTable to
allow users the ability to get a list of regions for a table.
- Add filter support and timestamp ranges to GetRequests.
- Add a socket idle handler to close connections to region clients after
some period of inactivity.
- Introduce RPC timeouts on either a global or per-RPC basis.
- Netty threads are now named for easier debugging.
- Add filters including FirstKeyOnlyFilter, ColumnPaginationFilter,
KeyOnlyFilter and FuzzyRowFilter
- Introduce the RegionClientStats object for tracking metrics around individual
region client connections.
Noteworthy bug fixes:
- Add the RegionOpeningException as a recoverable exception (#117)
- Region clients can now check the status of the socket write buffer before
sending RPCs to avoid OOM issues. Must be enabled via the config.
- Fix a small meta lookup permit bug when an exception is thrown and the
semaphore isn't released.
- Fix an issue with stale region clients created when a region server
restarts.
- Fix a bug with CDH5 and HBase 0.96 when closing a scanner that has rows
remaining to be read.
- Fix a potential bug with decoding byte array backed ChannelBuffers in
the region client.
- Fix an issue where an RPC could be stranded in the inflight map when an
exception is thrown.
* Version 1.6.0 (2014-10-07) [a56249b]
This is mostly a bugfix release, but the introduction of a few new APIs made
it become 1.6.0 instead of 1.5.1.
New public APIs:
- Introduction of RegionMovedException.
- Introduction of a lot of new filters (BinaryComparator,
BinaryPrefixComparator, BitComparator, CompareFilter,
DependentColumnFilter, FamilyFilter, FilterComparator,
QualifierFilter, RegexStringComparator, RowFilter,
SubstringComparator, TimestampsFilter, ValueFilter).
Noteworthy bug fixes:
- When a region was unavailable, some RPCs could be spuriously retried more
than once, which could lead to double-counting when the RPC was an atomic
increment (#81).
- Fix an error handling bug that arises when an RPC response fails to be
de-serialized properly (something that shouldn't happen in the first
place).
- Fix a compatibility issue with the latest versions of CDH5 that were
causing scanners to raise an InvalidResponseException.
- Properly handle RegionMovedException.
- Make our probes to recover from moving regions more lightweight by
crafting an unlikely key that is very unlikely to be present in the table,
since unfortunately exists() still materializes the row in memory in the
RegionServer, which is problematic for tables with big rows (#82).
- Fixed an off-by-one in the serialization of batched RPCs that could lead
to an uncaught IndexOutOfBoundsException.
* Version 1.5.0 (2013-12-13) [67fc3b7]
This release introduces compatibility with HBase 0.96 and up, and adds
a dependency on Google's protobuf-java library. Note that HBase 0.95.x,
which was a "developer preview" release train, is NOT supported.
Please note that support for explicit row locks has been removed from
HBase 0.95 and up. While the classes and functionality remain usable
when using earlier versions of HBase, an `UnsupportedOperationException'
will be raised if one attempt to send a `RowLockRequest' to a newer
version of HBase.
Please note that while AsyncHBase never made any guarantees about
the exact order in which multiple edits are applied within a batch,
the order is now different when talking to HBase 0.96 and up.
New public APIs:
- Scanners can now use a variety of different filters via the new
`ScanFilter' interfaces and its various implementations.
- It's possible to specify specific families to scan via `setFamilies'.
- Scanners can put an upper bound on the amount of data fetched by RPC
via the new `setMaxNumKeyValues' (works with HBase 0.96 and up only).
- HBaseRpc now has a `failfast()' and a `setFailfast(boolean)' pair
of methods to allow RPCs to fail as soon as their encounter an
issue out of the ordinary (e.g. not just a `NotSuchRegionException').
- `GetRequest' has additional constructor overloads that make its API
more uniform with that of other RPCs.
- HBaseClient has new `prefetchMeta' methods to prefetch metadata about
the regions of a table (for the entire table or a given key range).
Noteworthy bug fixes:
- DeleteRequest wasn't honoring its timestamp if one was given (#58).
- When a connection attempt fails, buffered RPCs weren't cleaned up
or retried properly.
- When one RPC fails because of another one (e.g. we fail to send an
RPC because a META lookup failed), the asynchronous exception that
is given to the callback now properly carries the original RPC that
failed.
- There was an unlikely race condition that could cause an NPE while
trying to retrieve the ROOT region from ZooKeeper.
- There was an unlikely race if the client got disconnected right
after successfully establishing a connection to a RegionServer, while
it was flushing RPC buffered while waiting to be connected. Also
when those RPCs were flushed, the batchable RPCs weren't given a
chance to get batched.
- It was not possible to scan the ROOT region (or the hbase:meta region
when using HBase 0.96+).
* Version 1.4.1 (2013-02-14) [1cbc303]
Noteworthy bug fixes:
- Under certain failure modes, especially during RegionServer failures
or regions split, asynchbase could incorrectly discard an RPC instead
of retrying it. This made the client look like it was stuck if the
RPC was a ROOT or META lookup (#1).
- Update all dependencies. Due to new dependencies in Junit and PowerMock,
asynchbase now depends on hamcrest-core and objenesis respectively.
These are test-only dependencies.
- Maven releases are now signed with the GPG key of [email protected]
* Version 1.4.0 (2012-11-10) [fae1a04]
New public APIs:
- Scanners can now scan multiple qualifiers at a time (#35).
- Scanner and GetRequest now enable you to specify how many versions
to read from HBase.
Noteworthy changes:
- Fixed cases where calling `flush()' or `shutdown()' while the
client is still starting up could cause it to terminate too early
and to not execute all pending/buffered RPCs (#2).
- Fixed an RPC serialization bug when batching whole-row deletes.
See issue #25.
- The Deferred returned by `flush()' now guarantees that buffered
atomic increments have also completed (#38).
- Upgraded to Netty 3.5.9 to avoid an IndexOutOfBoundsException
when deserializing a KeyValue with an empty qualifier or
value, under certain circumstances (#40).
- Fix increment coalescing to prevent overflowing Deferred callback
chains when too many increments pile up for some counter (#40).
- Increment coalescing now also supports negative values as well as
large positive values (previously the limit was 65535).
- Upgraded to suasync 1.3.1 and Netty 3.5.9.
- Added a series of integration tests to help ongoing QA.
* Version 1.3.2 (2012-07-10) [2af9f55]
Noteworthy changes:
- Upgraded to Netty 3.5.2.
- KeyValue now allows a timestamp of 0.
* Version 1.3.1 (2012-06-16) [7ea151b]
- Critical bug fix of issue #27 that makes some keys unusable
given certain region boundaries, in rare circumstances.
- `ensureTableFamilyExists' and `ensureTableExists' are cheaper
as they partially work around HBASE-3170.
* Version 1.3.0 (2012-05-06) [bb9168c]
New public APIs:
- PleaseThrottleException can now give you a Deferred.
- There is now a `Counter' class that provides a highly concurrent
replacement for AtomicLong from jsr166e's LongAdder.
- HBaseClient now has a `bufferAtomicIncrement' method used to
coalesce atomic counter increments.
- A new method, `stats()', provides detailed statistics on the client's
activities (number of calls for various RPCs, number of connections
created, etc.)
- `HBaseClient' has a new `compareAndSet(PutRequests, byte[])' method
for atomic Compare-And-Set (CAS) operation.
- The Scanner has new methods to allow specifying a time range to scan.
- `PutRequest' has extra constructors so as to be able to affect multiple
columns in a row. This is required to be able to atomically CAS more
than one column at a time on a given row.
Deprecated public APIs:
- In HBaseClient, the methods `rootLookupCount()',
`uncontendedMetaLookupCount()', and `contendedMetaLookupCount()' are
deprecated in favor of the new `stats()' API. These methods will be
removed in the 2.0 release.
Noteworthy changes:
- Upgraded to Netty 3.4.3, suasync to 1.2.0.
- asynchbase now depends on Google's Guava library (v12.0).
* Version 1.2.0 (2012-02-21) [a7ae238]
Noteworthy changes:
- Add support for HBase 0.92, as the on-wire RPC format underwent
significant changes that aren't compatible with previous versions.
NOTE: HBase never had a release in the 0.91 branch, and as such
this branch isn't fully supported.
- When talking to HBase 0.92, we automatically batch `DeleteRequests'
with `PutRequests'. Note that batching is enabled by default, and
will thus introduce a delay before sending out `DeleteRequests' to
HBase, whereas in earlier versions (or when talking to HBase 0.90
and before) the `DeleteRequests' are sent out immediately.
New public APIs:
- KeyValue now supports timestamps.
- HBaseClient now accepts a custom socket factory or executor, which can
be used to share an existing thread pool instead of having its own.
- The Netty Timer used by asynchbase is now available through an API, so
that code dependent on asynchbase can re-use the existing Timer thread
instead of having to create its own.
* Version 1.1.0 (2011-12-22) [1272a9e]
Noteworthy changes:
- Add support for CDH3b3's non-standard authentication code. This support
is enabled by specifying the Java system property "org.hbase.async.cdh3b3".
- Add support for HBase 0.90, as on-wire protocol changed in a non-backward
compatible way for the `get' RPC.
- Fix a dumb mistake in the `memcmp()' version that uses an offset and a
length. This function wasn't called either by asynchbase or by OpenTSDB.
- Bytes.pretty() no longer renders control characters like `^X' (which is
similar to what `cat -t' does). Instead they're now rendered like other
non-ASCII characters, using the hex notation `\xXX'. This makes the output
non-ambiguous and pastable into a Python shell.
- HBaseClient.shutdown() could callback too early, while the shutdown
sequence was still running.
- After doing a full-table scan, calling Scanner.close() would trigger an
error as the scanner would attempt to close itself again.
- When disconnecting from a RegionServer, if the socket wasn't getting
closed immediately, a Deferred could get called back twice, which would
trigger an AssertionError.
- DeleteRequest used to delete the last version of a cell, which wasn't the
intended behavior. It has been changed to delete all the previous
versions of a cell.
- Fixed various other race conditions during startup / shutdown that would
generally affect short-lived programs or MapReduce users.
New public APIs:
- DeleteRequest now has constructors for deleting multiple qualifiers per
row at once and deleting a whole family at once.
- New `qualifiers' method in GetRequest for getting multiple qualifiers per
row at once.
- Add new interfaces nested in `HBaseRpc' to provide public APIs to be able
to introspect the contents of RPCs.
* Version 1.0 (2010-11-08) [dafc645]
Initial beta release (bundled with OpenTSDB):
- Switched from LGPLv3+ to BSD license.
- Fixed many bugs, including incorrect or inefficient error handling,
synchronization bugs (race conditions).
- Shutting down the client now correctly waits until all RPCs in flight
have successfully completed.
- No public API changes.
* Version 0.1 (2010-09-08) [d0646bb]
Initial alpha release:
- Get, Put, Scan, ICV, with row locks and time-based edit buffering.
-----
Copyright (C) 2010-2012 The Async HBase Authors. All rights reserved.
This file is part of Async HBase.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
- Neither the name of the StumbleUpon nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Local Variables:
mode: outline
End: