[ https://issues.apache.org/jira/browse/IGNITE-19745?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexander Lapin updated IGNITE-19745: ------------------------------------- Description: h3. *Motivation* Occurred that it's not possible to subscribe to old meta storage revision. Alternative solution will be a combination of subscription for new ones along with scanning/retrieveing old revisions in a following way: # Register watch with a listener that blocks new entries processing with latch or similar before all already exisiting entries will be retrieved. # Retireve exisiting entries. # Unblock watch processing. Currently there's no method in meta storage API that will provide an ability to scan over revisions {*}locally{*}, so that we may add such mehod, e.g. {code:java} private List<Entry> doGet(byte[] key, long revLowerBound, long revUpperBound) {code} Aforementioned method is a method in RocksDbKeyValueStorage that should be both properly exposed to ms API and aslo implemented in KeyValueStorage. h3. Definition of Done. It's possible to read specif was: h3. *Motivation* In https://issues.apache.org/jira/browse/IGNITE-19735 I have tried to extends MetaStorageManager api with {code:java} void registerPrefixWatch(ByteArray key, long startRevision, WatchListener lsnr){code} method for the watch listeners receive the events with revision lower than the applied revision. The KeyValueStorage#watchRange method already has a start revision number so the issue seems easy. But I have written a test and see that the watch listener receives events with revisions which are grater than the applied revision only. See https://github.com/gridgain/apache-ignite-3/tree/ignite-19735_1 and test ItMetaStorageWatchTest#testWatchWithOldStartRevision. h3. *Definition of Done* Watch listeners which were registered with a start revision lower that the applied revision must receive all events from a start revision. > Add ability to retrieve/scan over meta storage revisions for a specific key > --------------------------------------------------------------------------- > > Key: IGNITE-19745 > URL: https://issues.apache.org/jira/browse/IGNITE-19745 > Project: Ignite > Issue Type: Bug > Reporter: Sergey Uttsel > Assignee: Sergey Uttsel > Priority: Major > Labels: ignite-3 > Time Spent: 10m > Remaining Estimate: 0h > > h3. *Motivation* > Occurred that it's not possible to subscribe to old meta storage revision. > Alternative solution will be a combination of subscription for new ones along > with scanning/retrieveing old revisions in a following way: > # Register watch with a listener that blocks new entries processing with > latch or similar before all already exisiting entries will be retrieved. > # Retireve exisiting entries. > # Unblock watch processing. > Currently there's no method in meta storage API that will provide an ability > to scan over revisions {*}locally{*}, so that we may add such mehod, e.g. > > {code:java} > private List<Entry> doGet(byte[] key, long revLowerBound, long revUpperBound) > {code} > Aforementioned method is a method in RocksDbKeyValueStorage that should be > both properly exposed to ms API and aslo implemented in KeyValueStorage. > h3. Definition of Done. > It's possible to read specif > -- This message was sent by Atlassian Jira (v8.20.10#820010)