[
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)