forked from OpenTSDB/asynchbase
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
316 lines (263 loc) · 14.5 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
AsyncHBase - User visible and noteworthy changes.
This project uses Semantic Versioning (see http://semver.org/).
* Version 1.7.1 (??)
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 tsunanet@gmail.com
* 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: