Skip to content
Commits on Sep 27, 2011
  1. @tsuna

    Update suasync from 1.0 to 1.1.0.

    Change-Id: I623cac1ad6014c8f05cd28b03bf6f00379324e9c
    tsuna committed Sep 27, 2011
Commits on Sep 26, 2011
  1. @tsuna

    Add a new target `cli' to easily invoke the command-line tool.

    This tool used to be invoked by the `check' target, which is
    now reserved for real unit tests.
    Sample usage:
      $ make cli ARGS='localhost get table key family qual1 qual2'
    Change-Id: I146498a9593dc3a69527aa1041d967143865a439
    tsuna committed Sep 25, 2011
  2. @tsuna

    Shutdown: Really retry to disconnect all RegionClients.

    Due to a merge error, d706156 was missing this line,
    without which it doesn't do anything useful.
    Change-Id: Ib18babc38653c5483ea5b62a915f3ef52addf3cf
    tsuna committed Sep 25, 2011
Commits on Sep 25, 2011
  1. @tsuna

    Thank Arthur van Hoff for his recent bug fixes.

    Change-Id: Ice1a50124f40610d698ef53db1847ba6a1e50213
    tsuna committed Sep 24, 2011
  2. @tsuna

    `Scanner.close()' should be a no-op on a Scanner already closed.

    Change-Id: I94cff44409601367c2e69ae1340399d3412cedb6
    Signed-off-by: Benoit Sigoure <>
    Arthur van Hoff committed with tsuna Sep 24, 2011
  3. @tsuna

    Shutdown: Retry to disconnect all RegionClients when some survive.

    Change-Id: I3e389193b6c27fb452a01f9b31750519a442cb01
    Arthur van Hoff committed with tsuna Sep 23, 2011
  4. @tsuna

    Properly chain Deferreds when retrying shutdown.

    Change-Id: I48eceb6fe463010ef2d8f681a059807e3b56adcd
    Signed-off-by: Benoit Sigoure <>
    Arthur van Hoff committed with tsuna Sep 23, 2011
Commits on Sep 2, 2011
  1. @tsuna

    Better `toString()' representation for Scanner RPCs.

    Change-Id: I9b1f40ed5089bdf3f2175d1898fb55a5961ff928
    tsuna committed Sep 2, 2011
  2. @tsuna

    Better pre-sizing of a buffer for `toString()'.

    Change-Id: I233653d7c34d80f95db329a0349c67a25d9fc1ac
    tsuna committed Sep 2, 2011
Commits on Sep 1, 2011
  1. @tsuna

    Don't render control characters like `^X'.

    This makes the output ambiguous and it makes it hard to paste it to a
    Python shell or to other programming environment that typically only
    understand the `\xXX' notation.
    Change-Id: Ida8e2ff30a53b320104f7118a03d9be7a316f4ca
    tsuna committed Aug 31, 2011
Commits on Aug 31, 2011
  1. @tsuna

    Revert "Get the SHA1 of HEAD in a simpler way."

    This reverts commit 9017362.
    Unfortunately, the behavior of `git show-ref' this change was relying on
    is fairly new, and Git 1.7.4 (still widely used) prints 2 lines instead
    of one.
    tsuna committed Aug 31, 2011
Commits on Aug 27, 2011
  1. @tsuna

    Use Semantic Versioning. Version 1.1 becomes 1.1.0.

    Change-Id: Ie2347a7d6cf436e49275da3220fdde0f96e4b844
    tsuna committed Aug 26, 2011
  2. @tsuna

    Add another NSRE test case.

    Change-Id: If2a8251efe443bd707b53b7922f2500e628f5ee6
    tsuna committed Aug 26, 2011
  3. @tsuna

    Add a unit test for a simple NSRE case.

    Change-Id: I302470f2a4dc7ad55c7243b51ef6786b3448beea
    tsuna committed Aug 25, 2011
  4. @tsuna

    Add helper functions to create fake META entries in unit tests.

    Change-Id: I930409ebc62d610e5c51583500994a1b557138a1
    tsuna committed Aug 25, 2011
  5. @tsuna

    Add a fake Timer to help speed up unit tests.

    Change-Id: I63572e63fb3dad89483e4c00f8e15878e7d7ab8e
    tsuna committed Aug 25, 2011
  6. @tsuna

    Add a simple unit test that mocks a get.

    Change-Id: Ice36beb2450773af79e242633d03f92bb0a27d3f
    tsuna committed Aug 20, 2011
  7. @tsuna

    Add a unit test skeleton.

    Change-Id: Iba3b13b8556df08f674cc3c9a395993fe5285da1
    tsuna committed Aug 19, 2011
  8. @tsuna

    Add new dependencies for unit tests.

    Change-Id: I09f5278d3132975e90f40f642e910de5e8a0f123
    tsuna committed Aug 19, 2011
  9. @tsuna

    Dynamically download dependencies.

    This mimics what OpenTSDB does, except asynchbase hasn't been
    autotoolized yet, so the fetchdep script had to change a bit.
    Change-Id: If8d48d13e52f970c3efe0f4eb72612bf0e58d6a9
    tsuna committed Aug 19, 2011
Commits on Aug 26, 2011
  1. @tsuna

    Look for -ROOT- again after 1s in case the znode was invalid.

    When reading a znode that was corrupt/invalid/empty, the code was simply
    giving up.  This is bad because it's not possible to kick off another
    lookup because the ZK session will stay up.  Instead keep the session
    open and kick off another lookup after a small delay.  Ideally this
    should use a ZK watch.
    Change-Id: Ibe9246cdac3727bd4c631e9f0e7f4a50e8be4cb0
    tsuna committed Aug 16, 2011
  2. @tsuna

    Get the SHA1 of HEAD in a simpler way.

    Change-Id: I392b1fb167da3c40bfa036ed675adf23f9add7da
    tsuna committed Aug 15, 2011
  3. @tsuna

    Add some stats on -ROOT- / .META. lookups.

    Add new public APIs in `HBaseClient' to retrieve stats about the number
    of lookups performed by the client.  This closes #7.
    Change-Id: If31ca61027715f53ead729f37c350aaf88ac6d3c
    tsuna committed Aug 9, 2011
  4. @tsuna

    Improve toString representation of RPCs.

    Various RPCs lacked important information in their toString
    representation.  This change also makes the implementations
    more efficient by avoiding unnecessary buffer reallocations.
    Change-Id: I76e0772ab55f5499bf013209d1f48ff598f9e179
    tsuna committed Aug 9, 2011
Commits on Aug 9, 2011
  1. @tsuna

    Add various interfaces to be able to introspect RPCs.

    All public RPC types now implement one or more interfaces (such as
    `HBaseRpc.HasKey' for RPCs that contain a row key) to provide public
    APIs to access the contents of the RPCs.  This is especially important
    for unit tests, where client code needs to verify the contents of RPCs
    without sending them out over the wire to a server.  This closes #9.
    Change-Id: I7b41a6affa12e912e973b533d57912a2bd3df673
    tsuna committed Aug 9, 2011
  2. @tsuna

    Add basic support for getting more than one cell per row at once.

    This change extends a public API in a backward-compatible fashion.
    Add new constructors and methods to GetRequest so it can accept more
    than one qualifier to get for a given row / column family.
    Change-Id: I7b154c3dd0decae7b0ff2d4661dc3c65230d6f1f
    tsuna committed Aug 9, 2011
  3. @tsuna

    Add basic support for deleting more than one cell per row at once.

    This change extends a public API in a backward-compatible fashion.
    Add new constructors to DeleteRequest so it can accept more than one
    qualifier to delete for a given row / column family.
    Change-Id: I1eb802ecfd1935cd10d6fd5103e9115060f9eba3
    tsuna committed Aug 9, 2011
  4. @tsuna

    Start version 1.1

    Change-Id: I455b542248c9ef86f10c37a7b99419c6f83be2bd
    tsuna committed Aug 9, 2011
Commits on Jul 26, 2011
  1. @tsuna

    Make `MultiPutRequest.toString' cheaper and call it less.

    When a `MultiPutRequest' contains a lot of edits, it's too expensive to
    serialize them all to ASCII for the `toString' representation.  This
    adds an upper bound on the amount of data the `toString' representation
    will produce.  It also changes `NotServingRegionException', which was a
    frequent caller of this method, to lazily generate the message of the
    exception, as it is rarely needed anyway.
    This should result in fewer CPU cycles wasted and less strain on the
    GC when we get an "NSRE storm".  This optimization is warranted by
    actual observations that "NSRE storms" would indeed cause significant
    CPU consumption and excess GCing due to the problem above.
    This closes #3.
    Change-Id: I7864c36aa4ef36fdaed51fb0837b0c9e00601453
    tsuna committed Jul 26, 2011
  2. @tsuna

    Bail out after an UnknownHostException when connecting to ZooKeeper.

    This error is typically caused by an incorrect ZK quorum specification,
    most commonly because of a typo or a configuration problem, so retrying
    immediately is generally not appropriate.  This closes #5.
    Change-Id: Iad714e375fe2ace1a416f4c75cdbe667c7ef09da
    tsuna committed Jul 26, 2011
Commits on Jul 24, 2011
  1. @tsuna

    Fix an warning message in the scanner code.

    Change-Id: I4081996333b611afb7b5e0a4626417bdcc1e9f84
    tsuna committed Jul 24, 2011
  2. @tsuna

    Fix a dumb mistake in the `memcmp()' that uses an offset+length.

    This function wasn't used by either asynchbase or OpenTSDB, and
    the lack of unit tests means it was never discovered until it got
    first used.  Sad.
    Change-Id: I38d246ed78cea8a59ec2ca84e58995fb54612310
    tsuna committed Jun 14, 2011
Commits on Feb 27, 2011
  1. @tsuna

    Bump up Scanner.DEFAULT_MAX_NUM_ROWS from 16 to 128.

    16 turned out to be too conservative.  Document the fact that this
    setting has a high performance impact on the scanning performance.
    A higher default value will provide better performance out of the
    box.  OpenTSDB sees a 40-50% speedup with this value.  People with
    very large rows will probably be aware of these considerations and
    are more likely to adjust the value than those who're using typical
    HBase rows, which tend to be fairly limited in size.
    Change-Id: I778e28c9211e2c0d462d66f7dd35f0c9ddd5afa6
    tsuna committed Feb 27, 2011
Commits on Jan 30, 2011
  1. @tsuna

    Add support code for different HBase server versions and 0.90.

    The goal is to transparently support different HBase versions with
    the same client.  Originally, this client didn't care what version
    the server was, because for what it uses of the protocol, nothing
    had changed since it was originally written, despite the RPC protocol
    version being bumped up a few times.  Unfortunately, HBase isn't
    very good at maintaining backwards compatibility, and sadly 0.90
    has a minor change that breaks it.
    Change all HBaseRPC implementations to declare whether or not they're
    sensitive to the version of the remote server.  When HBase folks break
    backwards compatibility by changing the on-wire format of an RPC, then
    this RPC becomes sensitive to protocol version.  This unfortunately
    happened in HBase 0.90 for the Get RPC (for no good reason IMO).
    HBaseRPC implementations are given the server's version when they're
    asked to serialize themselves, so they can adjust their behavior based
    on the version of the server they're talking to.
    Add a mechanism to automatically request the RegionServer's RPC protocol
    version with no extra overhead most of the time.  We used to piggyback
    the magic "hello" header in the first packet sent to the RegionServer,
    along with the first RPC.  We now additionally piggyback a version
    request too, so that both the "hello" + 1st RPC + version request go
    out in the same TCP packet (most of the time the 1st RPC is small).
    If a version-sensitive RPC attempts to go out before we know the version
    of the server, we delay it until the version is received.
    Change-Id: I130afd4305dfbe8bac4cfe4a50a06c6e239e266e
    tsuna committed Jan 29, 2011
  2. @tsuna

    Document an unimportant oddity of the HBase RPC protocol.

    For HBase's defense, this oddity comes from Hadoop's legacy.
    This is only for the sake of completeness.  No code change.
    Change-Id: I40cfdf8fd80005e7df2a30d8793a336e2457259d
    tsuna committed Jan 29, 2011
Something went wrong with that request. Please try again.