[
https://issues.apache.org/jira/browse/OAK-3001?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15668783#comment-15668783
]
Vikas Saurabh edited comment on OAK-3001 at 11/15/16 11:52 PM:
---------------------------------------------------------------
Attaching take1 [patch|^OAK-3001.take1.patch]. [~mreutegg], [~egli],
[~chetanm], [~reschke], can you please review if I wavered off from what we
planned to do?
Added method is
{code}
<T extends Document> int remove(Collection<T> collection,
String indexedProperty, long startValue,
long endValue)
throws DocumentStoreException;
{code}
I've added no conditions of {{\-1}} to disable condition. I wasn't sure if it
made enough sense - 0 is logically correct for startVal and is as good as \-1.
For our current case, endVal was always bound.
I didn't extend {{Condition}} class for this as afaics usage of condition
seemed to be somehow linked with id (I'm not completely sure of the intended
contract). May be that bit needs correction/refactor.
I think I can add a few more edge cases in BasicDocStoreTest.
[~reschke], I couldn't quite pack up this method into existing delete methods
in RDBDocStore or RDBDocStoreJDBC. May be, there was some more elegant way to
do it. All tests pass on h2 - I couldn't do it for others. I was planning to
use {{BETWEEN}} operator but internet seems to point that inclusive/exclusive
range for that operator is implementation dependent... so, I went for {{>=}}
and {{<=}}. There was one more interesting thing - conditional delete in
RDBDocStoreJDBC seemed to throw if condition isn't on modified... I copied that
same behavior in this new impl although the interface contract doesn't say so.
was (Author: catholicon):
Attaching take1 [patch|^OAK-3001.take1.patch]. [~mreutegg], [~egli],
[~chetanm], [~reschke], can you please review if I wavered off on what we
planned to do?
Added method is
{code}
<T extends Document> int remove(Collection<T> collection,
String indexedProperty, long startValue,
long endValue)
throws DocumentStoreException;
{code}
I've added no conditions of {{\-1}} to disable condition. I wasn't sure if it
made enough sense - 0 is logically correct for startVal and is as good as \-1.
For our current case, endVal was always bound.
I didn't extend {{Condition}} class for this as afaics usage of condition
seemed to be somehow linked with id (I'm not completely sure of the intended
contract). May be that bit needs correction/refactor.
I think I can add a few more edge cases in BasicDocStoreTest.
[~reschke], I couldn't quite pack up this method into existing delete methods
in RDBDocStore or RDBDocStoreJDBC. May be, there was some more elegant way to
do it. All tests pass on h2 - I couldn't do it for others. I was planning to
use {{BETWEEN}} operator but internet seems to point that inclusive/exclusive
range for that operator is implementation dependent... so, I went for {{>=}}
and {{<=}}. There was one more interesting thing - conditional delete in
RDBDocStoreJDBC seemed to throw if condition isn't on modified... I copied that
same behavior in this new impl although the interface contract doesn't say so.
> Simplify JournalGarbageCollector using a dedicated timestamp property
> ---------------------------------------------------------------------
>
> Key: OAK-3001
> URL: https://issues.apache.org/jira/browse/OAK-3001
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: core, mongomk
> Reporter: Stefan Egli
> Assignee: Vikas Saurabh
> Priority: Critical
> Labels: scalability
> Fix For: 1.6, 1.5.14
>
> Attachments: OAK-3001.take1.patch
>
>
> This subtask is about spawning out a
> [comment|https://issues.apache.org/jira/browse/OAK-2829?focusedCommentId=14585733&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14585733]
> from [~chetanm] re JournalGC:
> {quote}
> Further looking at JournalGarbageCollector ... it would be simpler if you
> record the journal entry timestamp as an attribute in JournalEntry document
> and then you can delete all the entries which are older than some time by a
> simple query. This would avoid fetching all the entries to be deleted on the
> Oak side
> {quote}
> and a corresponding
> [reply|https://issues.apache.org/jira/browse/OAK-2829?focusedCommentId=14585870&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14585870]
> from myself:
> {quote}
> Re querying by timestamp: that would indeed be simpler. With the current set
> of DocumentStore API however, I believe this is not possible. But:
> [DocumentStore.query|https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java#L127]
> comes quite close: it would probably just require the opposite of that
> method too:
> {code}
> public <T extends Document> List<T> query(Collection<T> collection,
> String fromKey,
> String toKey,
> String indexedProperty,
> long endValue,
> int limit) {
> {code}
> .. or what about generalizing this method to have both a {{startValue}} and
> an {{endValue}} - with {{-1}} indicating when one of them is not used?
> {quote}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)