You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@bookkeeper.apache.org by Jiannan Wang <ji...@yahoo-inc.com> on 2012/12/03 13:24:59 UTC

Re: Review Request: [BOOKKEEPER-442] Failed to deliver messages due to inconsistency between SubscriptionState and LedgerRanges.

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/7775/
-----------------------------------------------------------

(Updated Dec. 3, 2012, 12:24 p.m.)


Review request for bookkeeper.


Description
-------

Since InMemorySubscriptionState and LedgerRanges is maintained separately, there may exist such inconsistent state:
 (1). Topic ledgers: L1 [1 ~ 2], L2 [3 ~ ] 
 (2). Subscriber consumes to 2 and InMemorySubscriptionState is updated successfully but failed when updating subscription state metadata
 (3). AbstractSubscriptionManager#MessagesConsumedTask use InMemorySubscriptionState to do garbage collection and L1 is delete
 (4). If Hub restarts at this time, old subscription state is read and Hub will try to deliver message from 1


This addresses bug BOOKKEEPER-442.
    https://issues.apache.org/jira/browse/BOOKKEEPER-442


Diffs (updated)
-----

  hedwig-server/src/main/java/org/apache/hedwig/server/persistence/BookkeeperPersistenceManager.java 40811de 
  hedwig-server/src/main/java/org/apache/hedwig/server/subscriptions/AbstractSubscriptionManager.java 31bf505 
  hedwig-server/src/main/java/org/apache/hedwig/server/subscriptions/InMemorySubscriptionState.java 08994f0 
  hedwig-server/src/test/java/org/apache/hedwig/server/persistence/TestBookKeeperPersistenceManager.java d582fb6 

Diff: https://reviews.apache.org/r/7775/diff/


Testing
-------

Two test are added


Thanks,

Jiannan Wang