ConcurrentModificationException during gc run

2012-07-04 Thread Michael Dürig


Hi,

I got a ConcurrentModificationException while checking the 0.3 release. 
This didn't cause any test case to fail but was printed to the console.


Michael

Running org.apache.jackrabbit.oak.jcr.JcrTckTest
java.util.ConcurrentModificationException
at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1100)
at java.util.TreeMap$EntryIterator.next(TreeMap.java:1136)
at java.util.TreeMap$EntryIterator.next(TreeMap.java:1131)
	at 
org.apache.jackrabbit.mk.store.DefaultRevisionStore.markBranches(DefaultRevisionStore.java:561)
	at 
org.apache.jackrabbit.mk.store.DefaultRevisionStore.gc(DefaultRevisionStore.java:497)
	at 
org.apache.jackrabbit.mk.store.DefaultRevisionStore$2.run(DefaultRevisionStore.java:159)

at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at 
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)

at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
	at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
	at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
	at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)
	at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:680)


[jira] [Updated] (OAK-163) Move the JCR TCK back to the integrationTesting profile

2012-07-04 Thread Jukka Zitting (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-163?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jukka Zitting updated OAK-163:
--

Attachment: 0001-OAK-163-Move-the-JCR-TCK-back-to-the-integrationTest.patch

The attached patch implements the proposed change.

Relevant build times (on my computer) after the patch is applied:

* 1:22 for {{mvn clean install -DskipTests}}
* 2:01 for {{mvn clean install}} 
* 6:01 for {{mvn clean install -PintegrationTesting}}

Build time without the patch:

* 5:01 for {{mvn clean install}}

 Move the JCR TCK back to the integrationTesting profile
 ---

 Key: OAK-163
 URL: https://issues.apache.org/jira/browse/OAK-163
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: jcr
Reporter: Jukka Zitting
Priority: Minor
  Labels: tck
 Attachments: 
 0001-OAK-163-Move-the-JCR-TCK-back-to-the-integrationTest.patch


 In revision 1325811 the JCR TCK tests were moved from the integrationTesting 
 profile to a normal build. However, since then the execution time of the TCK 
 has grown to 3+ minutes, which is more than the rest of the Oak build 
 combined. To keep the build time down to at most a couple of minutes, I'd 
 like to move the TCK run back to the integrationTesting profile where it will 
 get executed only when explicitly requested (typically manually before a 
 commit or after one in a CI build).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




Re: ConcurrentModificationException during gc run

2012-07-04 Thread Dominique Pfister
Hi Michi,

Yes, Tom experienced the same issue yesterday. I'm gonna have a look.

Thanks
Dominique

On Jul 4, 2012, at 11:23 AM, Michael Dürig wrote:

 
 Hi,
 
 I got a ConcurrentModificationException while checking the 0.3 release. 
 This didn't cause any test case to fail but was printed to the console.
 
 Michael
 
 Running org.apache.jackrabbit.oak.jcr.JcrTckTest
 java.util.ConcurrentModificationException
   at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1100)
   at java.util.TreeMap$EntryIterator.next(TreeMap.java:1136)
   at java.util.TreeMap$EntryIterator.next(TreeMap.java:1131)
   at 
 org.apache.jackrabbit.mk.store.DefaultRevisionStore.markBranches(DefaultRevisionStore.java:561)
   at 
 org.apache.jackrabbit.mk.store.DefaultRevisionStore.gc(DefaultRevisionStore.java:497)
   at 
 org.apache.jackrabbit.mk.store.DefaultRevisionStore$2.run(DefaultRevisionStore.java:159)
   at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
   at 
 java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
   at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
   at 
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
   at java.lang.Thread.run(Thread.java:680)



[jira] [Commented] (OAK-163) Move the JCR TCK back to the integrationTesting profile

2012-07-04 Thread Julian Reschke (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13406398#comment-13406398
 ] 

Julian Reschke commented on OAK-163:


There's a risk that people *won't* run the TCK before checking in, causing loss 
of cycles for somebody else later on.

Also, running with integrationTesting is so slow for jackrabbit that most 
people won't wait for it to finish before checking in. So what may be right for 
OAK definitively is not right for Jackrabbit.

 Move the JCR TCK back to the integrationTesting profile
 ---

 Key: OAK-163
 URL: https://issues.apache.org/jira/browse/OAK-163
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: jcr
Reporter: Jukka Zitting
Priority: Minor
  Labels: tck
 Attachments: 
 0001-OAK-163-Move-the-JCR-TCK-back-to-the-integrationTest.patch


 In revision 1325811 the JCR TCK tests were moved from the integrationTesting 
 profile to a normal build. However, since then the execution time of the TCK 
 has grown to 3+ minutes, which is more than the rest of the Oak build 
 combined. To keep the build time down to at most a couple of minutes, I'd 
 like to move the TCK run back to the integrationTesting profile where it will 
 get executed only when explicitly requested (typically manually before a 
 commit or after one in a CI build).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (OAK-163) Move the JCR TCK back to the integrationTesting profile

2012-07-04 Thread Jukka Zitting (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13406401#comment-13406401
 ] 

Jukka Zitting commented on OAK-163:
---

bq. There's a risk that people won't run the TCK before checking in, causing 
loss of cycles for somebody else later on.

That's what we have the CI build for.

 Move the JCR TCK back to the integrationTesting profile
 ---

 Key: OAK-163
 URL: https://issues.apache.org/jira/browse/OAK-163
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: jcr
Reporter: Jukka Zitting
Priority: Minor
  Labels: tck
 Attachments: 
 0001-OAK-163-Move-the-JCR-TCK-back-to-the-integrationTest.patch


 In revision 1325811 the JCR TCK tests were moved from the integrationTesting 
 profile to a normal build. However, since then the execution time of the TCK 
 has grown to 3+ minutes, which is more than the rest of the Oak build 
 combined. To keep the build time down to at most a couple of minutes, I'd 
 like to move the TCK run back to the integrationTesting profile where it will 
 get executed only when explicitly requested (typically manually before a 
 commit or after one in a CI build).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (OAK-163) Move the JCR TCK back to the integrationTesting profile

2012-07-04 Thread Julian Reschke (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13406419#comment-13406419
 ] 

Julian Reschke commented on OAK-163:


bq. That's what we have the CI build for.

Downsides: Hasn't been always reliable. Problem is found only after checkin. 
Developer might not see it in time (end-of-day, vacation) or not paying 
attention. Etc.

 Move the JCR TCK back to the integrationTesting profile
 ---

 Key: OAK-163
 URL: https://issues.apache.org/jira/browse/OAK-163
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: jcr
Reporter: Jukka Zitting
Priority: Minor
  Labels: tck
 Attachments: 
 0001-OAK-163-Move-the-JCR-TCK-back-to-the-integrationTest.patch


 In revision 1325811 the JCR TCK tests were moved from the integrationTesting 
 profile to a normal build. However, since then the execution time of the TCK 
 has grown to 3+ minutes, which is more than the rest of the Oak build 
 combined. To keep the build time down to at most a couple of minutes, I'd 
 like to move the TCK run back to the integrationTesting profile where it will 
 get executed only when explicitly requested (typically manually before a 
 commit or after one in a CI build).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




Notes from the Oakathon

2012-07-04 Thread Michael Dürig


Hi,

Last week some of us met for another small Oakathon in Basel. Below is a 
list of topics that where touched and worked on and the related Jira 
issues. Any additional input is appreciated.


- Observation (OAK-144):
  * Observation events don't report every single event but rather a 
consolidated view at a given time (basically a a diff). Rational: 
performance on heavy write systems, (order of) individual events not 
clear/different for different cluster nodes in clustered setup.
  * Implement user data support on a best effort basis. In a clustered 
setup this can't be supported. See also 
http://markmail.org/message/osxupy3twc3pyild
  * oak-core should provide lightweight mechanism for clients to 
discover changes. oak-jcr can use this to implement JCR observation on 
top and trade off performance implications as needed.


- Internal value handling
  * To reduce GC overhead we should try to keep the number of small 
objects down

  * Possibly merge CoreValue into PropertyState
  * Use flyweight instances for common values/properties

- HTTP bindings (OAK-103, OAK-104)
  * Provide extension points for Sling to hook into. (See also the 
discussion on @oak-dev: http://markmail.org/message/tzpbxf5zduybezya.)


- Full text index (OAK-154)
  * Added an initial Lucene index stored under /jcr:system/oak:lucene 
in the repository (final location(s) TBD)
  * Index updates in a CommitEditor hook, so the index is always up to 
date with latest content changes
+ TODO: How to postpone time-consuming indexing operations like 
full text extraction

+ TODO: How to merge conflicts in the search index?
  * Basic QueryIndexProvider allows the existing query engine to 
leverage the Lucene index

+ TODO: Integrate with the rest of the build

- Merge/rebase logic handling (OAK-157)
  * The Lucene index work encountered some issues with the way we 
handle the merge/rebase operations

  * Need to look deeper into that over the next few weeks

Michael


[jira] [Created] (OAK-164) Replace Tree.remove(String) with Tree.remove()

2012-07-04 Thread JIRA
Michael Dürig created OAK-164:
-

 Summary: Replace Tree.remove(String) with Tree.remove()
 Key: OAK-164
 URL: https://issues.apache.org/jira/browse/OAK-164
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Reporter: Michael Dürig
Assignee: Michael Dürig


Access to through the parent node is problematic wrt. to access control. So 
instead of removing a child node from a parent, a node should be removed 
directly. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (OAK-165) NodeDelegate should not use Tree.getChild() but rather Root.getTree()

2012-07-04 Thread Jukka Zitting (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13406535#comment-13406535
 ] 

Jukka Zitting commented on OAK-165:
---

I understand where this is coming from (access control), but I'm concerned that 
as a result we now have to repeatedly resolve the full path every time we want 
to access something. In practice all the relevant information will already be 
cached in memory, so it may not be that much of a problem, but we're still 
adding path parsing and resolution steps to a place where they wouldn't really 
be necessary.

 NodeDelegate should not use Tree.getChild() but rather Root.getTree()
 -

 Key: OAK-165
 URL: https://issues.apache.org/jira/browse/OAK-165
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: jcr
 Environment: {{Tree.getChild()}} is problematic wrt. to access 
 control. {{Root.getTree()}} should be used instead. 
Reporter: Michael Dürig
Assignee: Michael Dürig
 Fix For: 0.4




--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Created] (OAK-167) Caching NodeStore implementation

2012-07-04 Thread Jukka Zitting (JIRA)
Jukka Zitting created OAK-167:
-

 Summary: Caching NodeStore implementation
 Key: OAK-167
 URL: https://issues.apache.org/jira/browse/OAK-167
 Project: Jackrabbit Oak
  Issue Type: New Feature
  Components: core
Reporter: Jukka Zitting


For remote MicroKernel implementations and other cases where local caching of 
content is needed it would be useful to have a NodeStore implementation that 
maintains a simple in-memory or on-disk cache of frequently accessed content. 

Such a NodeStore implementation could also be used to better isolate the 
current caching logic behind uncommitted changes.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (OAK-167) Caching NodeStore implementation

2012-07-04 Thread Stefan Guggisberg (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-167?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13406581#comment-13406581
 ] 

Stefan Guggisberg commented on OAK-167:
---

 Such a NodeStore implementation could also be used to better isolate the 
 current caching logic behind uncommitted changes.

wouldn't that ideally the transient space, i.e. oak-jcr?

 Caching NodeStore implementation
 

 Key: OAK-167
 URL: https://issues.apache.org/jira/browse/OAK-167
 Project: Jackrabbit Oak
  Issue Type: New Feature
  Components: core
Reporter: Jukka Zitting

 For remote MicroKernel implementations and other cases where local caching of 
 content is needed it would be useful to have a NodeStore implementation that 
 maintains a simple in-memory or on-disk cache of frequently accessed content. 
 Such a NodeStore implementation could also be used to better isolate the 
 current caching logic behind uncommitted changes.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




Re: Notes from the Oakathon

2012-07-04 Thread Stefan Guggisberg
On Wed, Jul 4, 2012 at 2:37 PM, Michael Dürig mdue...@apache.org wrote:

 Hi,

 Last week some of us met for another small Oakathon in Basel. Below is a
 list of topics that where touched and worked on and the related Jira issues.
 Any additional input is appreciated.

 - Observation (OAK-144):
   * Observation events don't report every single event but rather a
 consolidated view at a given time (basically a a diff). Rational:
 performance on heavy write systems, (order of) individual events not
 clear/different for different cluster nodes in clustered setup.
   * Implement user data support on a best effort basis. In a clustered setup
 this can't be supported. See also
 http://markmail.org/message/osxupy3twc3pyild
   * oak-core should provide lightweight mechanism for clients to discover
 changes. oak-jcr can use this to implement JCR observation on top and trade
 off performance implications as needed.

 - Internal value handling
   * To reduce GC overhead we should try to keep the number of small objects
 down
   * Possibly merge CoreValue into PropertyState
   * Use flyweight instances for common values/properties

 - HTTP bindings (OAK-103, OAK-104)
   * Provide extension points for Sling to hook into. (See also the

i don't remember any discussions that sling should be using
an alternative interface to access the repository. IMO
sling should only use the jcr api.

cheers
stefan

 discussion on @oak-dev: http://markmail.org/message/tzpbxf5zduybezya.)

 - Full text index (OAK-154)
   * Added an initial Lucene index stored under /jcr:system/oak:lucene in the
 repository (final location(s) TBD)
   * Index updates in a CommitEditor hook, so the index is always up to date
 with latest content changes
 + TODO: How to postpone time-consuming indexing operations like full
 text extraction
 + TODO: How to merge conflicts in the search index?
   * Basic QueryIndexProvider allows the existing query engine to leverage
 the Lucene index
 + TODO: Integrate with the rest of the build

 - Merge/rebase logic handling (OAK-157)
   * The Lucene index work encountered some issues with the way we handle the
 merge/rebase operations
   * Need to look deeper into that over the next few weeks

 Michael


Re: Notes from the Oakathon

2012-07-04 Thread Jukka Zitting
Hi,

On Wed, Jul 4, 2012 at 5:35 PM, Stefan Guggisberg
stefan.guggisb...@gmail.com wrote:
 On Wed, Jul 4, 2012 at 2:37 PM, Michael Dürig mdue...@apache.org wrote:
 - HTTP bindings (OAK-103, OAK-104)
   * Provide extension points for Sling to hook into. (See also the

 i don't remember any discussions that sling should be using
 an alternative interface to access the repository. IMO
 sling should only use the jcr api.

It came up as a potential option that Sling might be interested in.

For example, many Sling components are currently having a hard time
with the JCR observation feature, and giving them access to lower
level features in Oak (or alternatively implementing the relevant
Sling features directly as an Oak plugin) could simplify things a lot.

Another potential Sling extension would be a custom Oak index provider
for optimizing the kinds of queries Sling uses.

BR,

Jukka Zitting


[jira] [Resolved] (OAK-161) Refactor Tree#getChildStatus

2012-07-04 Thread JIRA

 [ 
https://issues.apache.org/jira/browse/OAK-161?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Dürig resolved OAK-161.
---

   Resolution: Fixed
Fix Version/s: 0.4

Fixed at revision 1357314

 Refactor Tree#getChildStatus
 

 Key: OAK-161
 URL: https://issues.apache.org/jira/browse/OAK-161
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Reporter: angela
Assignee: Michael Dürig
 Fix For: 0.4


 as discussed today Tree#getChildStatus is a bit problematic from my point 
 of view as it requires the parent Tree to be always accessible. as discussed 
 and stated multiple times in the past that may not be always the case.
 a part from the drawback it offers once we have access control in place
 it doesn't work for the root node, which doesn't have a parent by definition.
 therefore i would suggest to refactor the method to Tree#getStatus and make it
 an implementation detail if the status is stored with the parent or the tree
 itself.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (OAK-114) MicroKernel API: specify retention policy for old revisions

2012-07-04 Thread Stefan Guggisberg (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-114?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13406609#comment-13406609
 ] 

Stefan Guggisberg commented on OAK-114:
---

 Would it be possible to change for at least 10 minutes to for at least 10 
 minutes since last access?

the 'extend lease model', apart from introducing complex state management 
requirements in the microkernel,  would e.g. allow misbehaved clients to 
compromise the stability of the mk. a client could force the mk to keep old 
revisions for ever and prevent vital gc cycles.

i therefore don't think that we should allow clients to (explicitly or 
implicitly) extend the life span
of a specific revision.

 MicroKernel API: specify retention policy for old revisions
 ---

 Key: OAK-114
 URL: https://issues.apache.org/jira/browse/OAK-114
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: mk
Reporter: Stefan Guggisberg
Assignee: Stefan Guggisberg
 Attachments: OAK-114.patch


 the MicroKernel API javadoc should specify the minimal guaranteed retention 
 period for old revisions. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (OAK-114) MicroKernel API: specify retention policy for old revisions

2012-07-04 Thread JIRA

[ 
https://issues.apache.org/jira/browse/OAK-114?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13406619#comment-13406619
 ] 

Michael Dürig commented on OAK-114:
---

bq. i can't follow this argument. with my proposal a client is minimally 
guaranteed to be able to read revisions no older than N minutes.

Yes and that guarantee is IMO too weak.

 MicroKernel API: specify retention policy for old revisions
 ---

 Key: OAK-114
 URL: https://issues.apache.org/jira/browse/OAK-114
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: mk
Reporter: Stefan Guggisberg
Assignee: Stefan Guggisberg
 Attachments: OAK-114.patch


 the MicroKernel API javadoc should specify the minimal guaranteed retention 
 period for old revisions. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (OAK-114) MicroKernel API: specify retention policy for old revisions

2012-07-04 Thread JIRA

[ 
https://issues.apache.org/jira/browse/OAK-114?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13406622#comment-13406622
 ] 

Michael Dürig commented on OAK-114:
---

BTW: why is 10 minutes the correct value?

 MicroKernel API: specify retention policy for old revisions
 ---

 Key: OAK-114
 URL: https://issues.apache.org/jira/browse/OAK-114
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: mk
Reporter: Stefan Guggisberg
Assignee: Stefan Guggisberg
 Attachments: OAK-114.patch


 the MicroKernel API javadoc should specify the minimal guaranteed retention 
 period for old revisions. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




Re: Notes from the Oakathon

2012-07-04 Thread Carsten Ziegeler
2012/7/4 Jukka Zitting jukka.zitt...@gmail.com:
 Hi,


 It came up as a potential option that Sling might be interested in.

 For example, many Sling components are currently having a hard time
 with the JCR observation feature, and giving them access to lower
 level features in Oak (or alternatively implementing the relevant
 Sling features directly as an Oak plugin) could simplify things a lot.

From the peanut gallery: I'm not aware of problems with the JCR API in Sling


 Another potential Sling extension would be a custom Oak index provider
 for optimizing the kinds of queries Sling uses.

While this might make sense, that wouldn't be tied to Sling but any
client of OAK.

Carsten

-- 
Carsten Ziegeler
cziege...@apache.org


[jira] [Comment Edited] (OAK-114) MicroKernel API: specify retention policy for old revisions

2012-07-04 Thread Jukka Zitting (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-114?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13406637#comment-13406637
 ] 

Jukka Zitting edited comment on OAK-114 at 7/4/12 5:53 PM:
---

bq. i can't follow this argument

Here's a snippet of code that illustrates Michael's point:

{code}
String revision = mk.getHeadRevision();
mk.commit(...);  // Could occur in another thread
TimeUnit.MINUTES.sleep(5);   // Could be any delay 10mins, or no delay at 
all
mk.getNodes(/, revision, ...);
{code}

Say the {{revision}} returned from the first call was committed something like 
an hour ago. Then by the time the {{getNodes}} call is reached it can be that 
the garbage collector has already removed that revision since it's already 
older than 10 minutes and it isn't anymore the latest revision in the 
repository.

If that problem isn't fixed, a client can't make any reasonable assumptions 
about how long it can expect a particular revision to stay alive. The only way 
for a client to guarantee that it can see a given revision for at least the 
next 10 minutes would be for it to directly commit that revision, but that's 
definitely not something we want read-only clients to be doing.

  was (Author: jukkaz):
bq. i can't follow this argument

Here's a snippet of code that illustrates Michael's point:

{code}
String revision = mk.getHeadRevision();
mk.commit(...);  // Could occur in another thread
TimeUnit.MINUTES.sleep(5);   // Could be any delay 10mins, or no delay at 
all
mk.getNodes(/, revision, ...);
{code}

Say the {{revision}} returned from the first call was committed something like 
an hour ago. Then by the time the {{getNodes}} call is reached it can be that 
the garbage collector has already removed that revision since it's already 
older than 10ms and it isn't the latest revision in the repository.

If that problem isn't fixed, a client can't make any reasonable assumptions 
about how long it can expect a particular revision to stay alive. The only way 
for a client to guarantee that it can see a given revision for at least the 
next 10 minutes would be for it to directly commit that revision, but that's 
definitely not something we want read-only clients to be doing.
  
 MicroKernel API: specify retention policy for old revisions
 ---

 Key: OAK-114
 URL: https://issues.apache.org/jira/browse/OAK-114
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: mk
Reporter: Stefan Guggisberg
Assignee: Stefan Guggisberg
 Attachments: OAK-114.patch


 the MicroKernel API javadoc should specify the minimal guaranteed retention 
 period for old revisions. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




buildbot success in ASF Buildbot on oak-trunk

2012-07-04 Thread buildbot
The Buildbot has detected a restored build on builder oak-trunk while building 
ASF Buildbot.
Full details are available at:
 http://ci.apache.org/builders/oak-trunk/builds/80

Buildbot URL: http://ci.apache.org/

Buildslave for this Build: osiris_ubuntu

Build Reason: forced: by IRC user gmcdonald on channel #asftest: testing date 
fix
Build Source Stamp: HEAD
Blamelist: 

Build succeeded!

sincerely,
 -The Buildbot