Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id CC1E6200C24 for ; Thu, 23 Feb 2017 17:46:51 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id CAD06160B3E; Thu, 23 Feb 2017 16:46:51 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 0EC2F160B67 for ; Thu, 23 Feb 2017 17:46:50 +0100 (CET) Received: (qmail 64196 invoked by uid 500); 23 Feb 2017 16:46:50 -0000 Mailing-List: contact commits-help@gora.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@gora.apache.org Delivered-To: mailing list commits@gora.apache.org Received: (qmail 64146 invoked by uid 99); 23 Feb 2017 16:46:50 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Feb 2017 16:46:50 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D244BDFDC2; Thu, 23 Feb 2017 16:46:49 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: lewismc@apache.org To: commits@gora.apache.org Date: Thu, 23 Feb 2017 16:46:50 -0000 Message-Id: In-Reply-To: <9bbac0319e024b08a64f925b12ec2583@git.apache.org> References: <9bbac0319e024b08a64f925b12ec2583@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [2/3] gora git commit: Fixed issue GORA-443 archived-at: Thu, 23 Feb 2017 16:46:52 -0000 Fixed issue GORA-443 Project: http://git-wip-us.apache.org/repos/asf/gora/repo Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/b0cd1950 Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/b0cd1950 Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/b0cd1950 Branch: refs/heads/master Commit: b0cd1950c978181890213e1c85e437e44421405e Parents: 5664dc6 Author: Kiyonari Harigae Authored: Wed Feb 22 18:53:14 2017 +0900 Committer: Kiyonari Harigae Committed: Wed Feb 22 18:53:14 2017 +0900 ---------------------------------------------------------------------- .../main/java/org/apache/gora/hbase/store/HBaseStore.java | 10 ++++++++-- .../org/apache/gora/hbase/store/HBaseTableConnection.java | 5 +++-- 2 files changed, 11 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/gora/blob/b0cd1950/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseStore.java ---------------------------------------------------------------------- diff --git a/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseStore.java b/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseStore.java index 7d9f527..8176c91 100644 --- a/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseStore.java +++ b/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseStore.java @@ -88,6 +88,9 @@ implements Configurable { private static final String SCANNER_CACHING_PROPERTIES_KEY = "scanner.caching" ; private static final int SCANNER_CACHING_PROPERTIES_DEFAULT = 0 ; + + private static final int PUTS_AND_DELETES_PUT_TS_OFFSET = 1; + private static final int PUTS_AND_DELETES_DELETE_TS_OFFSET = 2; private volatile Admin admin; @@ -236,8 +239,11 @@ implements Configurable { try { Schema schema = persistent.getSchema(); byte[] keyRaw = toBytes(key); - Put put = new Put(keyRaw); - Delete delete = new Delete(keyRaw); + long timeStamp = System.currentTimeMillis(); + // Guarantee Put after Delete + Put put = new Put(keyRaw, timeStamp - PUTS_AND_DELETES_PUT_TS_OFFSET); + Delete delete = new Delete(keyRaw, timeStamp - PUTS_AND_DELETES_DELETE_TS_OFFSET); + List fields = schema.getFields(); for (int i = 0; i < fields.size(); i++) { if (!persistent.isDirty(i)) { http://git-wip-us.apache.org/repos/asf/gora/blob/b0cd1950/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseTableConnection.java ---------------------------------------------------------------------- diff --git a/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseTableConnection.java b/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseTableConnection.java index c3c7009..3901fd4 100644 --- a/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseTableConnection.java +++ b/gora-hbase/src/main/java/org/apache/gora/hbase/store/HBaseTableConnection.java @@ -110,11 +110,12 @@ public class HBaseTableConnection { public void flushCommits() throws IOException { BufferedMutator bufMutator = connection.getBufferedMutator(this.tableName); for (ConcurrentLinkedQueue buffer : bPool) { - for (Mutation m: buffer) { + while (!buffer.isEmpty()) { + Mutation m = buffer.poll(); bufMutator.mutate(m); - bufMutator.flush(); } } + bufMutator.flush(); bufMutator.close(); }