[jira] [Commented] (OAK-2596) more (jmx) instrumentation for observation queue

2015-03-12 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger commented on OAK-2596:
---

bq. Maybe there are ways to expose such information from the DocumentMK diff 
chache

There are cache stats available already for the diff cache, which includes e.g. 
a
hit rate. But it doesn't provide historical numbers like the our TimeSeries.

 more (jmx) instrumentation for observation queue
 

 Key: OAK-2596
 URL: https://issues.apache.org/jira/browse/OAK-2596
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Affects Versions: 1.0.12
Reporter: Stefan Egli
Assignee: Michael Dürig
  Labels: monitoring, observation
 Fix For: 1.0.13


 While debugging issues with the observation queue it would be handy to have 
 more detailed information available. At the moment you can only see one value 
 wrt length of the queue: that is the maximum of all queues. It is unclear if 
 the queue is that long for only one or many listeners. And it is unclear from 
 that if the listener is slow or the engine that produces the events for the 
 listener.
 So I'd suggest to add the following details - possible exposed via JMX? :
 # add queue length details to each of the observation listeners
 # have a history of the last, eg 1000 events per listener showing a) how long 
 the event took to be created/generated and b) how long the listener took to 
 process. Sometimes averages are not detailed enough so such a in-depth 
 information might become useful. (Not sure about the feasibility of '1000' 
 here - maybe that could be configurable though - just putting the idea out 
 here).
 # have some information about whether a listener is currently 'reading events 
 from the cache' or whether it has to go to eg mongo 
 # maybe have a 'top 10' listeners that have the largest queue at the moment 
 to easily allow navigation instead of having to go through all (eg 200) 
 listeners manually each time.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-2582) RDB: improve memory cache handling

2015-03-12 Thread Julian Reschke (JIRA)

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

Julian Reschke resolved OAK-2582.
-
Resolution: Fixed

 RDB: improve memory cache handling
 --

 Key: OAK-2582
 URL: https://issues.apache.org/jira/browse/OAK-2582
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: rdbmk
Affects Versions: 1.0.11, 1.1.6
Reporter: Julian Reschke
Assignee: Julian Reschke
 Fix For: 1.1.8, 1.0.13


 Improve memory cache handling:
 - invalidateCache should just mark cache entries as to be revalidated
 - to-be revalidated cache entries can be used for conditional retrieval from 
 DB



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (OAK-2464) Optimize read of known non-existing children

2015-03-12 Thread Julian Reschke (JIRA)

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

Julian Reschke edited comment on OAK-2464 at 3/11/15 2:18 PM:
--

This change causes a reproducible failure on my systems:

addNodeGetNode(org.apache.jackrabbit.oak.plugins.document.SimpleTest)  Time 
elapsed: 0.453 sec   FAILURE!
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:92)
at org.junit.Assert.assertTrue(Assert.java:43)
at org.junit.Assert.assertNotNull(Assert.java:526)
at org.junit.Assert.assertNotNull(Assert.java:537)
at 
org.apache.jackrabbit.oak.plugins.document.SimpleTest.addNodeGetNode(SimpleTest.java:86)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)


[~chetanm] removed fix version 1.0.13 and backing out the change for now


was (Author: reschke):
This change causes a reproducible failure on my systems:

addNodeGetNode(org.apache.jackrabbit.oak.plugins.document.SimpleTest)  Time 
elapsed: 0.453 sec   FAILURE!
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:92)
at org.junit.Assert.assertTrue(Assert.java:43)
at org.junit.Assert.assertNotNull(Assert.java:526)
at org.junit.Assert.assertNotNull(Assert.java:537)
at 
org.apache.jackrabbit.oak.plugins.document.SimpleTest.addNodeGetNode(SimpleTest.java:86)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)


 Optimize read of known non-existing children
 

 Key: OAK-2464
 URL: https://issues.apache.org/jira/browse/OAK-2464
 Project: Jackrabbit Oak
  Issue Type: Improvement
Reporter: Vikas Saurabh
Assignee: Chetan Mehrotra
Priority: Minor
 Fix For: 1.1.6

 Attachments: 
 0001-OAK-2464-Optimize-read-of-known-non-existing-childre.patch, 
 OAK-2464-Sort order test case.patch, OAK-2464-Take2.patch


 Reading a non-existing node always queries down to {{DocumentStore}}. 
 {{DocumentNodeStore}} should consider {{nodeChildrenCache}} to see if it 
 already knows about non-existence and avoid a look up into {{DocumentStore}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2464) Optimize read of known non-existing children

2015-03-12 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-2464:
--

Thanks Julian for spotting this. I saw this failure but somehow in my mind 
assumed that SimpleTest is some custom test of mine  I have in branch code but 
not checked in! Digging this further indicates that failure is due to OAK-2448 
not being merged to branch.

[~mreutegg] Would it be fine to merge OAK-2448 to branch?  

 Optimize read of known non-existing children
 

 Key: OAK-2464
 URL: https://issues.apache.org/jira/browse/OAK-2464
 Project: Jackrabbit Oak
  Issue Type: Improvement
Reporter: Vikas Saurabh
Assignee: Chetan Mehrotra
Priority: Minor
 Fix For: 1.1.6

 Attachments: 
 0001-OAK-2464-Optimize-read-of-known-non-existing-childre.patch, 
 OAK-2464-Sort order test case.patch, OAK-2464-Take2.patch


 Reading a non-existing node always queries down to {{DocumentStore}}. 
 {{DocumentNodeStore}} should consider {{nodeChildrenCache}} to see if it 
 already knows about non-existence and avoid a look up into {{DocumentStore}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2570) Open indexes in IndexTracker non blocking way

2015-03-12 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-2570:
--

I have [increased the timeout to 30 sec|http://svn.apache.org/r1665893]. Async 
index gets triggered every 5 sec so it might miss out picking up changes for 2 
cycle but should be able to do this 6 cycles. Let see how it behaves

 Open indexes in IndexTracker non blocking way
 -

 Key: OAK-2570
 URL: https://issues.apache.org/jira/browse/OAK-2570
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: oak-lucene
Reporter: Chetan Mehrotra
Assignee: Chetan Mehrotra
 Fix For: 1.1.8, 1.0.13

 Attachments: OAK-2570.patch


 Currently {{IndexTracker}} opens the indexes in same thread where the commit 
 happens as it acts as an {{Observer}}. If opening the index takes long time 
 it would block the commit thread and might introduce delay in other operation 
 on same thread. 
 For example {{DocumentNodeStore}} invokes the {{Observer}} in 
 {{backgroundRead}} and that call would not complete unless the {{Observer}} 
 returns back. For a system to be responsive the {{backgroundRead}} has to be 
 quick as it holds the write lock. Due to current implementation at time 
 system turn unresponsive. 
 Looking at the threaddump from one such unresponsive system it appears that 
 slowness is due to Lucene index taking time to reopen. 
 Thread which hold the {{backgroundOperationLock}} for {{read}} is 
 {noformat}
 pool-9-thread-1 Id=101 in RUNNABLE
 at java.io.FileInputStream.open(Native Method)
 at java.io.FileInputStream.init(FileInputStream.java:146)
 at 
 org.apache.jackrabbit.core.data.LazyFileInputStream.open(LazyFileInputStream.java:104)
 at 
 org.apache.jackrabbit.core.data.LazyFileInputStream.read(LazyFileInputStream.java:163)
 at com.google.common.io.ByteStreams.read(ByteStreams.java:828)
 at com.google.common.io.ByteStreams.readFully(ByteStreams.java:695)
 at 
 org.apache.jackrabbit.oak.plugins.index.lucene.OakDirectory$OakIndexFile.loadBlob(OakDirectory.java:218)
 at 
 org.apache.jackrabbit.oak.plugins.index.lucene.OakDirectory$OakIndexFile.readBytes(OakDirectory.java:264)
 at 
 org.apache.jackrabbit.oak.plugins.index.lucene.OakDirectory$OakIndexInput.readBytes(OakDirectory.java:350)
 at 
 org.apache.jackrabbit.oak.plugins.index.lucene.OakDirectory$OakIndexInput.readByte(OakDirectory.java:356)
 at org.apache.lucene.store.DataInput.readInt(DataInput.java:84)
 at org.apache.lucene.codecs.CodecUtil.checkHeader(CodecUtil.java:126)
 at org.apache.lucene.util.fst.FST.init(FST.java:318)
 at org.apache.lucene.util.fst.FST.init(FST.java:304)
 at 
 org.apache.lucene.codecs.BlockTreeTermsReader$FieldReader.init(BlockTreeTermsReader.java:484)
 at 
 org.apache.lucene.codecs.BlockTreeTermsReader.init(BlockTreeTermsReader.java:176)
 at 
 org.apache.lucene.codecs.lucene41.Lucene41PostingsFormat.fieldsProducer(Lucene41PostingsFormat.java:437)
 at 
 org.apache.lucene.index.SegmentCoreReaders.init(SegmentCoreReaders.java:116)
 at org.apache.lucene.index.SegmentReader.init(SegmentReader.java:96)
 at 
 org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:62)
 at 
 org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:843)
 at 
 org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:52)
 at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:66)
 at 
 org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.init(IndexNode.java:94)
 at 
 org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.open(IndexNode.java:62)
 at 
 org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker$1.leave(IndexTracker.java:96)
 at 
 org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:153)
 at 
 org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.dispatch(DocumentNodeState.java:433)
 at 
 org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.compareAgainstBaseState(DocumentNodeState.java:260)
 at 
 org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148)
 at 
 org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.dispatch(DocumentNodeState.java:433)
 at 
 org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.compareAgainstBaseState(DocumentNodeState.java:260)
 at 
 org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:52)
 at 
 org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.update(IndexTracker.java:105)
   - locked 
 org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker@6243264e
 at 
 

[jira] [Resolved] (OAK-2413) Clarify Editor.childNodeChanged()

2015-03-12 Thread angela (JIRA)

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

angela resolved OAK-2413.
-
   Resolution: Fixed
Fix Version/s: (was: 1.2)
   1.1.8

 Clarify Editor.childNodeChanged()
 -

 Key: OAK-2413
 URL: https://issues.apache.org/jira/browse/OAK-2413
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Reporter: Marcel Reutegger
Assignee: angela
Priority: Minor
 Fix For: 1.1.8


 The current contract for {{Editor.childNodeChanged()}} does not specify if 
 this method may also be called when the child node did not actually change. 
 The method {{NodeStateDiff.childNodeChanged()}} explicitly states that there 
 may be such calls. Looking at the implementation connecting the two classes, 
 {{EditorDiff.childNodeChange()}} simply calls the editor without checking 
 whether the child node did in fact change.
 I think we either have to change the {{EditorDiff}} or update the contract 
 for the Editor and adjust implementations. E.g. right now, PrivilegeValidator 
 (implements Editor), assumes a call to {{childNodeChange()}} indeed means the 
 child node changed.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2413) Clarify Editor.childNodeChanged()

2015-03-12 Thread angela (JIRA)

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

angela commented on OAK-2413:
-

fixed {{PrivilegeValidator}} at revision 1665630 (including a test for both 
before and after state being equal or not). [~mreutegg] thanks for spotting!


 Clarify Editor.childNodeChanged()
 -

 Key: OAK-2413
 URL: https://issues.apache.org/jira/browse/OAK-2413
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Reporter: Marcel Reutegger
Assignee: angela
Priority: Minor
 Fix For: 1.1.8


 The current contract for {{Editor.childNodeChanged()}} does not specify if 
 this method may also be called when the child node did not actually change. 
 The method {{NodeStateDiff.childNodeChanged()}} explicitly states that there 
 may be such calls. Looking at the implementation connecting the two classes, 
 {{EditorDiff.childNodeChange()}} simply calls the editor without checking 
 whether the child node did in fact change.
 I think we either have to change the {{EditorDiff}} or update the contract 
 for the Editor and adjust implementations. E.g. right now, PrivilegeValidator 
 (implements Editor), assumes a call to {{childNodeChange()}} indeed means the 
 child node changed.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2596) more (jmx) instrumentation for observation queue

2015-03-12 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-2596:
--

bq. maybe have a 'top 10' listeners that have the largest queue at the moment 
to easily allow navigation instead of having to go through all (eg 200) 
listeners manually each time.

This can be done similar to {{ConsolidatedCacheStatsMBean}} which collate the 
cache related stats and provides a unified view

 more (jmx) instrumentation for observation queue
 

 Key: OAK-2596
 URL: https://issues.apache.org/jira/browse/OAK-2596
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Affects Versions: 1.0.12
Reporter: Stefan Egli
Assignee: Michael Dürig
  Labels: monitoring, observation
 Fix For: 1.0.13


 While debugging issues with the observation queue it would be handy to have 
 more detailed information available. At the moment you can only see one value 
 wrt length of the queue: that is the maximum of all queues. It is unclear if 
 the queue is that long for only one or many listeners. And it is unclear from 
 that if the listener is slow or the engine that produces the events for the 
 listener.
 So I'd suggest to add the following details - possible exposed via JMX? :
 # add queue length details to each of the observation listeners
 # have a history of the last, eg 1000 events per listener showing a) how long 
 the event took to be created/generated and b) how long the listener took to 
 process. Sometimes averages are not detailed enough so such a in-depth 
 information might become useful. (Not sure about the feasibility of '1000' 
 here - maybe that could be configurable though - just putting the idea out 
 here).
 # have some information about whether a listener is currently 'reading events 
 from the cache' or whether it has to go to eg mongo 
 # maybe have a 'top 10' listeners that have the largest queue at the moment 
 to easily allow navigation instead of having to go through all (eg 200) 
 listeners manually each time.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-1450) Run repair tool if repo cannot start (automatically or explicitly)

2015-03-12 Thread Michael Marth (JIRA)

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

Michael Marth updated OAK-1450:
---
Fix Version/s: (was: 1.2)

 Run repair tool if repo cannot start (automatically or explicitly)
 --

 Key: OAK-1450
 URL: https://issues.apache.org/jira/browse/OAK-1450
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: segmentmk
Reporter: Michael Marth
Priority: Minor
  Labels: production, resilience, tools

 If the repo does not come up should we automatically run the repair tool 
 (OAK-1446) and then retry...? Not sure about this one. Maybe starting the 
 repo again with an explicit flag --repair would be better.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-2602) [Solr] Cost calculation takes time with solr pings even when not fulfilling query

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili resolved OAK-2602.
--
Resolution: Fixed

removed the ping calls in r1665892 (trunk) and r1665895 (branch 1.0)

 [Solr] Cost calculation takes time with solr pings even when not fulfilling 
 query
 -

 Key: OAK-2602
 URL: https://issues.apache.org/jira/browse/OAK-2602
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: oak-solr
Affects Versions: 1.0.12, 1.1.7
Reporter: Amit Jain
Assignee: Tommaso Teofili
 Fix For: 1.1.8, 1.0.13


 Cost calculation for queries which are fired quite often [1] and which are 
 not going to fulfilled by solr take time due to which the overall cost of the 
 operation is high. 
 [1]
 SELECT * FROM [nt:base] WHERE PROPERTY([rep:members], 'WeakReference') = 
 $uuid 
 SELECT * FROM [nt:base] WHERE [jcr:uuid] = $id



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-2590) IndexCopier Error occurred while removing deleted files from Local

2015-03-12 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra resolved OAK-2590.
--
Resolution: Fixed

As a fix now a info level message would logged. When index gets updated again 
then next cycle of opening a new directory would again make an attempt to 
delete such files. Hence such files would never get accumulated and created 
garbage for long time 

Fixed with http://svn.apache.org/r1666102

 IndexCopier Error occurred while removing deleted files from Local
 --

 Key: OAK-2590
 URL: https://issues.apache.org/jira/browse/OAK-2590
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: oak-lucene
Reporter: Chetan Mehrotra
Assignee: Chetan Mehrotra
Priority: Minor
 Fix For: 1.1.8


 Under windows, with copy on read mode enabled for the lucene indexes, 
 following WARN logs were seen:
 {code:java}
 03.02.2015 17:40:58.952 *WARN* [pool-5-thread-2] 
 org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier Error occurred 
 while removing deleted files from Local 
 MMapDirectory@D:\repository\index\e5a943cdec3000bd8ce54924fd2070ab5d1d35b9ecf530963a3583d43bf28293\1
  
 lockFactory=NativeFSLockFactory@D:\repository\index\e5a943cdec3000bd8ce54924fd2070ab5d1d35b9ecf530963a3583d43bf28293\1,
  Remote OakDirectory@232fe713 
 lockFactory=org.apache.lucene.store.NoLockFactory@696097fc
 java.io.IOException: Cannot delete 
 D:\repository\index\e5a943cdec3000bd8ce54924fd2070ab5d1d35b9ecf530963a3583d43bf28293\1\_wq4.cfs
 at org.apache.lucene.store.FSDirectory.deleteFile(FSDirectory.java:273)
 at 
 org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier$CopyOnReadDirectory.removeDeletedFiles(IndexCopier.java:274)
 at 
 org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier$CopyOnReadDirectory.access$1000(IndexCopier.java:113)
 at 
 org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier$CopyOnReadDirectory$2.run(IndexCopier.java:247)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
 at java.lang.Thread.run(Unknown Source)
 {code}
 As the files are memory mapped and the handle is yet not GC its possible that 
 windows would not allow to delete such file. In such a case the log message 
 should be improved and possibly have a way where attempt is made to delete 
 such files later



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2605) Support for additional encodings needed in ReversedLinesFileReader

2015-03-12 Thread Alex Parvulescu (JIRA)

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

Alex Parvulescu commented on OAK-2605:
--

fyi I added a missing license header with http://svn.apache.org/r1665898

 Support for additional encodings needed in ReversedLinesFileReader
 --

 Key: OAK-2605
 URL: https://issues.apache.org/jira/browse/OAK-2605
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: segmentmk
Affects Versions: 1.1.7
 Environment: Windows 2012 R2 Japanese
 Windows 2012 R2 Korean
 Windows 2012 R2 Simplified Chinese
 Windows 2012 R2 Traditional Chinese
Reporter: Leandro Reis
Assignee: Michael Dürig
 Fix For: 1.1.8

 Attachments: OAK-2605.patch


 I'm working on a product that uses Commons IO via Jackrabbit Oak. In the 
 process of testing the launch of such product on Japanese Windows 2012
 Server R2, I came across the following exception: 
 (java.io.UnsupportedEncodingException: Encoding windows-31j is not supported 
 yet (feel free to submit a patch))
 windows-31j is the IANA name for Windows code page 932 (Japanese), and is 
 returned by Charset.defaultCharset(), used in 
 org.apache.commons.io.input.ReversedLinesFileReader [0].
 A patch for this issue was provided in 
 https://issues.apache.org/jira/browse/IO-471 .  
 It also includes changes needed to support Chinese Simplified, Chinese 
 Traditional and Korean.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-2612) Findbugs plugin version should depend on JDK version

2015-03-12 Thread Tommaso Teofili (JIRA)
Tommaso Teofili created OAK-2612:


 Summary: Findbugs plugin version should depend on JDK version
 Key: OAK-2612
 URL: https://issues.apache.org/jira/browse/OAK-2612
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: parent
Affects Versions: 1.1.7
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
 Fix For: 1.1.8


Looking at the current CI builds the JDK 8 one is always failing because 
_maven-findbugs-plugin-2.5.3_ doesn't work with it, on the other hand upgrading 
to 3.0.0 will make the JDK 6 build failing, therefore the version used has to 
be dependent on the used JDK.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2612) Findbugs plugin version should depend on JDK version

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili commented on OAK-2612:
--

in the meantime I've fixed this issue by using _maven-findbugs-plugin-2.5.5_ 
for JDK6 and _3.0.0_ for JDK 7+.

 Findbugs plugin version should depend on JDK version
 

 Key: OAK-2612
 URL: https://issues.apache.org/jira/browse/OAK-2612
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: parent
Affects Versions: 1.1.7
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
 Fix For: 1.1.8


 Looking at the current CI builds the JDK 8 one is always failing because 
 _maven-findbugs-plugin-2.5.3_ doesn't work with it, on the other hand 
 upgrading to 3.0.0 will make the JDK 6 build failing, therefore the version 
 used has to be dependent on the used JDK.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2287) ConflictHandler for merging jcr:lastModified

2015-03-12 Thread Alex Parvulescu (JIRA)

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

Alex Parvulescu commented on OAK-2287:
--

from where I'm standing the patch is good enough. The only remaining question 
is if it makes sense to refactor it to be used for any date value that might 
conflict in a similar way (ie. custom:lastModified). I can take care of this if 
it is interesting to have.

 ConflictHandler for merging jcr:lastModified
 

 Key: OAK-2287
 URL: https://issues.apache.org/jira/browse/OAK-2287
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, jcr
Reporter: Alex Parvulescu
Assignee: Alex Parvulescu
Priority: Minor
 Fix For: 1.2

 Attachments: OAK-2287-2.patch, OAK-2287.patch


 As discussed on oak-dev, 'jcr:lastModified' is a date property and it 
 represents the last modification date. It makes sense to merge concurrent 
 updates by picking the newer date of the 2 options.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2464) Optimize read of known non-existing children

2015-03-12 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-2464:
--

Remerged the fix to branch. All testcase pass locally

 Optimize read of known non-existing children
 

 Key: OAK-2464
 URL: https://issues.apache.org/jira/browse/OAK-2464
 Project: Jackrabbit Oak
  Issue Type: Improvement
Reporter: Vikas Saurabh
Assignee: Chetan Mehrotra
Priority: Minor
 Fix For: 1.1.6, 1.0.13

 Attachments: 
 0001-OAK-2464-Optimize-read-of-known-non-existing-childre.patch, 
 OAK-2464-Sort order test case.patch, OAK-2464-Take2.patch


 Reading a non-existing node always queries down to {{DocumentStore}}. 
 {{DocumentNodeStore}} should consider {{nodeChildrenCache}} to see if it 
 already knows about non-existence and avoid a look up into {{DocumentStore}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-2611) Lucene suggester should only be updated if the index is used for suggestions

2015-03-12 Thread Tommaso Teofili (JIRA)
Tommaso Teofili created OAK-2611:


 Summary: Lucene suggester should only be updated if the index is 
used for suggestions
 Key: OAK-2611
 URL: https://issues.apache.org/jira/browse/OAK-2611
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: oak-lucene
Affects Versions: 1.1.7
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
 Fix For: 1.1.8


As mentioned on [oak-dev@|http://markmail.org/message/vp6qg7v5j3oxev73] Lucene 
suggester should be updated only in indexes that are used for suggestions 
(_useForSuggestions = true_ in index definition). 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2611) Lucene suggester should only be updated if the index is used for suggestions

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili commented on OAK-2611:
--

improved suggester test configuration to avoid continuously update suggester 
index other than in {{SuggestTest}} in r1666100

 Lucene suggester should only be updated if the index is used for suggestions
 

 Key: OAK-2611
 URL: https://issues.apache.org/jira/browse/OAK-2611
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: oak-lucene
Affects Versions: 1.1.7
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
 Fix For: 1.1.8


 As mentioned on [oak-dev@|http://markmail.org/message/vp6qg7v5j3oxev73] 
 Lucene suggester should be updated only in indexes that are used for 
 suggestions (_useForSuggestions = true_ in index definition). 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Stefan Egli (JIRA)

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

Stefan Egli commented on OAK-2557:
--

Discussed offline with [~mreutegg]: created OAK-2613 to follow this up

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.0.13, 1.2

 Attachments: OAK-2557-2.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-2612) Findbugs plugin version should depend on JDK version

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili resolved OAK-2612.
--
Resolution: Fixed

fixed in r1666107

 Findbugs plugin version should depend on JDK version
 

 Key: OAK-2612
 URL: https://issues.apache.org/jira/browse/OAK-2612
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: parent
Affects Versions: 1.1.7
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
 Fix For: 1.1.8


 Looking at the current CI builds the JDK 8 one is always failing because 
 _maven-findbugs-plugin-2.5.3_ doesn't work with it, on the other hand 
 upgrading to 3.0.0 will make the JDK 6 build failing, therefore the version 
 used has to be dependent on the used JDK.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-2609) Thread.interrupt seems to stop repository

2015-03-12 Thread Carsten Ziegeler (JIRA)
Carsten Ziegeler created OAK-2609:
-

 Summary: Thread.interrupt seems to stop repository
 Key: OAK-2609
 URL: https://issues.apache.org/jira/browse/OAK-2609
 Project: Jackrabbit Oak
  Issue Type: Bug
Affects Versions: 1.1.7
 Environment: Java 7
Reporter: Carsten Ziegeler
Priority: Critical


We have a sporadic problem with Sling's JCR installer 3.3.8 and Oak (tar mk). 
It seems to timing related: the JCR installer does a Thread#interrupt at one 
point and sometimes this brings the hole instance to stop. Nothing else is 
going on any more. 
While of course, a workaround is to remove the Thread.interrupt call in the JCR 
installer (which we did, see SLING-4477), I have the fear that this can happen 
with any code that is using the repository and gets interrupted.
This error is hard to reproduce, however with three people testing we could see 
this several times happening



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2612) Findbugs plugin version should depend on JDK version

2015-03-12 Thread Alex Parvulescu (JIRA)

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

Alex Parvulescu commented on OAK-2612:
--

_will make the JDK 6 build failing_ which off course begs the question about 
dropping JDK6 support :)

 Findbugs plugin version should depend on JDK version
 

 Key: OAK-2612
 URL: https://issues.apache.org/jira/browse/OAK-2612
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: parent
Affects Versions: 1.1.7
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
 Fix For: 1.1.8


 Looking at the current CI builds the JDK 8 one is always failing because 
 _maven-findbugs-plugin-2.5.3_ doesn't work with it, on the other hand 
 upgrading to 3.0.0 will make the JDK 6 build failing, therefore the version 
 used has to be dependent on the used JDK.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-2613) Do versionGC more frequently and at adjusted speed

2015-03-12 Thread Stefan Egli (JIRA)

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

Stefan Egli updated OAK-2613:
-
Description: 
This is a follow-up ticket from 
[here|https://issues.apache.org/jira/browse/OAK-2557?focusedCommentId=14355322page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14355322]
 mixed with an offline discussion with [~mreutegg]:
 * we could make the VersionGC play nicely to existing load on the system: it 
could progress slower if the load is higher and vice-verca. One simple measure 
could be: if the observation queue is small (eg below 10) then the load is low 
and it could progress full-speed. Otherwise it could add some artificial 
sleeping in between.
 * we could run versionGC more regularly than once a day but instead kind of 
'continuously' let it run in the background. While the speed of the gc would be 
adjusted to the load - it also would have to be assured that it doesn't run too 
slow (and would never finish if instance is under some constant load)

Note that 'adjusted speed' would also imply some intelligence about the system 
load, as pointed out by [~chetanm] on OAK-2557:
{quote}Version GC currently ensures that query fired is made against the 
Secondary (if present). However having some throttling in such background task 
would be good thing to have. But first we need to have some SystemLoadIndicator 
notion in Oak which can be provide details say in percentage 1..100 about 
system load. We can then expose configurable threshold which VersionGC would 
listen for and adjust its working accordingly.

It can be a JMX bean which emits notification and we have our components listen 
to those notification (or use OSGi SR/Events). That can be used in other places 
like Observation processing, Blob GC etc
{quote}

  was:
This is a follow-up ticket from 
[here|https://issues.apache.org/jira/browse/OAK-2557?focusedCommentId=14355322page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14355322]
 mixed with an offline discussion with [~mreutegg]:
 * we could make the VersionGC play nicely to existing load on the system: it 
could progress slower if the load is higher and vice-verca. One simple measure 
could be: if the observation queue is small (eg below 10) then the load is low 
and it could progress full-speed. Otherwise it could add some artificial 
sleeping in between.
 * we could run versionGC more regularly than once a day but instead kind of 
'continuously' let it run in the background. While the speed of the gc would be 
adjusted to the load - it also would have to be assured that it doesn't run too 
slow (and would never finish if instance is under some constant load)


 Do versionGC more frequently and at adjusted speed
 --

 Key: OAK-2613
 URL: https://issues.apache.org/jira/browse/OAK-2613
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, mongomk
Affects Versions: 1.0.12
Reporter: Stefan Egli
 Fix For: 1.2


 This is a follow-up ticket from 
 [here|https://issues.apache.org/jira/browse/OAK-2557?focusedCommentId=14355322page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14355322]
  mixed with an offline discussion with [~mreutegg]:
  * we could make the VersionGC play nicely to existing load on the system: it 
 could progress slower if the load is higher and vice-verca. One simple 
 measure could be: if the observation queue is small (eg below 10) then the 
 load is low and it could progress full-speed. Otherwise it could add some 
 artificial sleeping in between.
  * we could run versionGC more regularly than once a day but instead kind of 
 'continuously' let it run in the background. While the speed of the gc would 
 be adjusted to the load - it also would have to be assured that it doesn't 
 run too slow (and would never finish if instance is under some constant load)
 Note that 'adjusted speed' would also imply some intelligence about the 
 system load, as pointed out by [~chetanm] on OAK-2557:
 {quote}Version GC currently ensures that query fired is made against the 
 Secondary (if present). However having some throttling in such background 
 task would be good thing to have. But first we need to have some 
 SystemLoadIndicator notion in Oak which can be provide details say in 
 percentage 1..100 about system load. We can then expose configurable 
 threshold which VersionGC would listen for and adjust its working accordingly.
 It can be a JMX bean which emits notification and we have our components 
 listen to those notification (or use OSGi SR/Events). That can be used in 
 other places like Observation processing, Blob GC etc
 {quote}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2612) Findbugs plugin version should depend on JDK version

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili commented on OAK-2612:
--

bq. begs the question about dropping JDK6 suppor :)

absolutely, I'd be generally happy to drop it.

 Findbugs plugin version should depend on JDK version
 

 Key: OAK-2612
 URL: https://issues.apache.org/jira/browse/OAK-2612
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: parent
Affects Versions: 1.1.7
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
 Fix For: 1.1.8


 Looking at the current CI builds the JDK 8 one is always failing because 
 _maven-findbugs-plugin-2.5.3_ doesn't work with it, on the other hand 
 upgrading to 3.0.0 will make the JDK 6 build failing, therefore the version 
 used has to be dependent on the used JDK.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-2613) Do versionGC more frequently and at adjusted speed

2015-03-12 Thread Stefan Egli (JIRA)
Stefan Egli created OAK-2613:


 Summary: Do versionGC more frequently and at adjusted speed
 Key: OAK-2613
 URL: https://issues.apache.org/jira/browse/OAK-2613
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, mongomk
Affects Versions: 1.0.12
Reporter: Stefan Egli
 Fix For: 1.2


This is a follow-up ticket from 
[here|https://issues.apache.org/jira/browse/OAK-2557?focusedCommentId=14355322page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14355322]
 mixed with an offline discussion with [~mreutegg]:
 * we could make the VersionGC play nicely to existing load on the system: it 
could progress slower if the load is higher and vice-verca. One simple measure 
could be: if the observation queue is small (eg below 10) then the load is low 
and it could progress full-speed. Otherwise it could add some artificial 
sleeping in between.
 * we could run versionGC more regularly than once a day but instead kind of 
'continuously' let it run in the background. While the speed of the gc would be 
adjusted to the load - it also would have to be assured that it doesn't run too 
slow (and would never finish if instance is under some constant load)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (OAK-2612) Findbugs plugin version should depend on JDK version

2015-03-12 Thread JIRA

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

Michael Dürig edited comment on OAK-2612 at 3/12/15 10:05 AM:
--

I think we should drop it after 1.2. Let's take the discussion up again for 
1.3.x


was (Author: mduerig):
I think we should drop it after 1.2. Let's the discussion up again for 1.3.x

 Findbugs plugin version should depend on JDK version
 

 Key: OAK-2612
 URL: https://issues.apache.org/jira/browse/OAK-2612
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: parent
Affects Versions: 1.1.7
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
 Fix For: 1.1.8


 Looking at the current CI builds the JDK 8 one is always failing because 
 _maven-findbugs-plugin-2.5.3_ doesn't work with it, on the other hand 
 upgrading to 3.0.0 will make the JDK 6 build failing, therefore the version 
 used has to be dependent on the used JDK.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-2500) checkDeepHistory/fixDeepHistory/prepareDeepHistory for oak-mongo.js

2015-03-12 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger updated OAK-2500:
--
Fix Version/s: (was: 1.0.13)
   1.1.8

We do not maintain the version in the 1.0 branch and the 
[documentation|http://jackrabbit.apache.org/oak/docs/command_line.html] refers 
to the trunk version. 

 checkDeepHistory/fixDeepHistory/prepareDeepHistory for oak-mongo.js
 ---

 Key: OAK-2500
 URL: https://issues.apache.org/jira/browse/OAK-2500
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: run
Affects Versions: 1.0.8
Reporter: Stefan Egli
Assignee: Marcel Reutegger
 Fix For: 1.1.8

 Attachments: oak-mongo-mod.js


 The oak-mongo.js currently contains checkHistory/fixHistory which are 
 cleaning up 'dangling revisions/split-documents' on a particular path.
 Now it would be good to have a command that goes through the entire 
 repository and checks/fixes these dangling revisions.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra updated OAK-2557:
-
Attachment: OAK-2557-3.patch

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.0.13, 1.2

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili commented on OAK-2476:
--

after fixing OAK-2612, also the JDK 8 build starts ok.
I've set each build to poll SVN once a day to at least have an execution for 
each day, I'm now trying to set up the different fixtures and, hopefully, the 
matrix.

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili commented on OAK-2476:
--

matrix job created with [~mirko]'s help (thanks! :) ) at 
https://builds.apache.org/job/Apache%20Jackrabbit%20Oak%20matrix/

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-2557:
--

Thanks for the detailed review [~mreutegg]. Attached is the [updated 
patch|^OAK-2557-3.patch]

bq. Maybe even promote NodeDocIdCollector to a top level class to avoid 
breaking encapsulation?

That makes more sense as its a generic class not bound to Document logic. I 
have refactored and moved this class to oak-commons under sort package. 
[~tmueller] Can you have a quick look as with this it becomes part of Oak API

bq. NodeDocIdCollector.sort() uses a hard coded Comparator when sorting in 
memory instead of the instance passed in the constructor.

Fixed that

bq. NodeDocIdCollector.flushToFile() uses PrintWriter.println(). This method 
does not throw an IOException when the write fails. I think it would be better 
to use BufferedWriter directly.

Did not knew that. Refactored to use {{BufferedWriter}}

bq. VersionGCState.close() deletes the the directory before resources are 
closed. I think this will fail on Windows based machines.

Thanks for catching that. Would have missed this completely!

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.0.13, 1.2

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-2614) Timeout for MongoDB query

2015-03-12 Thread Marcel Reutegger (JIRA)
Marcel Reutegger created OAK-2614:
-

 Summary: Timeout for MongoDB query
 Key: OAK-2614
 URL: https://issues.apache.org/jira/browse/OAK-2614
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, mongomk
Reporter: Marcel Reutegger
Assignee: Marcel Reutegger
 Fix For: 1.1.8


MongoDB 2.6 introduced a query timeout which allows a client to specify a time 
how long a query is allowed to execute.

I'd like to introduce this as a configurable feature to better control resource 
usage in MongoDB and stop too expensive queries.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2596) more (jmx) instrumentation for observation queue

2015-03-12 Thread JIRA

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

Michael Dürig commented on OAK-2596:


The gust of the implementation for this will be in the Jackrabbit code base.

 more (jmx) instrumentation for observation queue
 

 Key: OAK-2596
 URL: https://issues.apache.org/jira/browse/OAK-2596
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Affects Versions: 1.0.12
Reporter: Stefan Egli
Assignee: Michael Dürig
  Labels: monitoring, observation
 Fix For: 1.1.8, 1.0.13


 While debugging issues with the observation queue it would be handy to have 
 more detailed information available. At the moment you can only see one value 
 wrt length of the queue: that is the maximum of all queues. It is unclear if 
 the queue is that long for only one or many listeners. And it is unclear from 
 that if the listener is slow or the engine that produces the events for the 
 listener.
 So I'd suggest to add the following details - possible exposed via JMX? :
 # add queue length details to each of the observation listeners
 # have a history of the last, eg 1000 events per listener showing a) how long 
 the event took to be created/generated and b) how long the listener took to 
 process. Sometimes averages are not detailed enough so such a in-depth 
 information might become useful. (Not sure about the feasibility of '1000' 
 here - maybe that could be configurable though - just putting the idea out 
 here).
 # have some information about whether a listener is currently 'reading events 
 from the cache' or whether it has to go to eg mongo 
 # maybe have a 'top 10' listeners that have the largest queue at the moment 
 to easily allow navigation instead of having to go through all (eg 200) 
 listeners manually each time.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger commented on OAK-2557:
---

Looks better now. [~tmueller], WDYT?

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.0.13, 1.2

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger commented on OAK-2557:
---

Forgot one thing: the patch contains a change in the logback-test.xml. I assume 
this is unintentional and will not be committed.

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.0.13, 1.2

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-2615) oak-pojosr tests fail

2015-03-12 Thread JIRA
Michael Dürig created OAK-2615:
--

 Summary: oak-pojosr tests fail
 Key: OAK-2615
 URL: https://issues.apache.org/jira/browse/OAK-2615
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: pojosr
Reporter: Michael Dürig
Assignee: Michael Dürig


The build fails for me in {{oak-pojosr}} with many failures like:

{noformat}
Running org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 10.142 sec  
FAILURE!
testNodeStoreWithBlobStore_OAK_1676(org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest)
  Time elapsed: 10.138 sec   FAILURE!
java.lang.AssertionError: No service found for 
org.apache.jackrabbit.oak.spi.state.NodeStore. Expression: sr. Values: sr = null
at 
org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:400)
at 
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:646)
at 
org.apache.jackrabbit.oak.run.osgi.AbstractRepositoryFactoryTest.getServiceWithWait(AbstractRepositoryFactoryTest.groovy:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at 
org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:207)
at 
org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:56)
at 
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
at 
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at 
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at 
org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest.testNodeStoreWithBlobStore_OAK_1676(NodeStoreConfigTest.groovy:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at 
org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
at 
org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
at 
org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at 
org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at 
org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at 
org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at 
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at 
org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running org.apache.jackrabbit.oak.run.osgi.OakOSGiRepositoryFactoryTest
Tests run: 1, 

[jira] [Updated] (OAK-2615) oak-pojosr tests fail

2015-03-12 Thread JIRA

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

Michael Dürig updated OAK-2615:
---
Assignee: Chetan Mehrotra  (was: Michael Dürig)

 oak-pojosr tests fail
 -

 Key: OAK-2615
 URL: https://issues.apache.org/jira/browse/OAK-2615
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: pojosr
Reporter: Michael Dürig
Assignee: Chetan Mehrotra
 Fix For: 1.1.8


 The build fails for me in {{oak-pojosr}} with many failures like:
 {noformat}
 Running org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest
 Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 10.142 sec 
  FAILURE!
 testNodeStoreWithBlobStore_OAK_1676(org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest)
   Time elapsed: 10.138 sec   FAILURE!
 java.lang.AssertionError: No service found for 
 org.apache.jackrabbit.oak.spi.state.NodeStore. Expression: sr. Values: sr = 
 null
   at 
 org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:400)
   at 
 org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:646)
   at 
 org.apache.jackrabbit.oak.run.osgi.AbstractRepositoryFactoryTest.getServiceWithWait(AbstractRepositoryFactoryTest.groovy:82)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at 
 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:207)
   at 
 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:56)
   at 
 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
   at 
 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
   at 
 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
   at 
 org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest.testNodeStoreWithBlobStore_OAK_1676(NodeStoreConfigTest.groovy:41)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at 
 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
   at 
 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
   at 
 org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
   at 
 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
   at 
 org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
   at 
 org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
   at 
 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
   at 
 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
   at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
   at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
   at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
   at 
 org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
   at 
 org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
   at 
 org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at 
 org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
   at 
 org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
   at 
 org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
   at 
 

[jira] [Updated] (OAK-2615) oak-pojosr tests fail

2015-03-12 Thread JIRA

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

Michael Dürig updated OAK-2615:
---
Fix Version/s: 1.1.8

 oak-pojosr tests fail
 -

 Key: OAK-2615
 URL: https://issues.apache.org/jira/browse/OAK-2615
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: pojosr
Reporter: Michael Dürig
Assignee: Chetan Mehrotra
 Fix For: 1.1.8


 The build fails for me in {{oak-pojosr}} with many failures like:
 {noformat}
 Running org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest
 Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 10.142 sec 
  FAILURE!
 testNodeStoreWithBlobStore_OAK_1676(org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest)
   Time elapsed: 10.138 sec   FAILURE!
 java.lang.AssertionError: No service found for 
 org.apache.jackrabbit.oak.spi.state.NodeStore. Expression: sr. Values: sr = 
 null
   at 
 org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:400)
   at 
 org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:646)
   at 
 org.apache.jackrabbit.oak.run.osgi.AbstractRepositoryFactoryTest.getServiceWithWait(AbstractRepositoryFactoryTest.groovy:82)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at 
 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:207)
   at 
 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:56)
   at 
 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
   at 
 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
   at 
 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
   at 
 org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest.testNodeStoreWithBlobStore_OAK_1676(NodeStoreConfigTest.groovy:41)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at 
 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
   at 
 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
   at 
 org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
   at 
 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
   at 
 org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
   at 
 org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
   at 
 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
   at 
 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
   at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
   at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
   at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
   at 
 org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
   at 
 org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
   at 
 org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at 
 org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
   at 
 org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
   at 
 org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
   at 
 org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
  

[jira] [Commented] (OAK-2596) more (jmx) instrumentation for observation queue

2015-03-12 Thread JIRA

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

Michael Dürig commented on OAK-2596:


I also removed the 1.0.13 fix version as I think we should only merge this into 
the branch when we have a hard requirement. 

 more (jmx) instrumentation for observation queue
 

 Key: OAK-2596
 URL: https://issues.apache.org/jira/browse/OAK-2596
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Affects Versions: 1.0.12
Reporter: Stefan Egli
Assignee: Michael Dürig
  Labels: monitoring, observation
 Fix For: 1.1.9


 While debugging issues with the observation queue it would be handy to have 
 more detailed information available. At the moment you can only see one value 
 wrt length of the queue: that is the maximum of all queues. It is unclear if 
 the queue is that long for only one or many listeners. And it is unclear from 
 that if the listener is slow or the engine that produces the events for the 
 listener.
 So I'd suggest to add the following details - possible exposed via JMX? :
 # add queue length details to each of the observation listeners
 # have a history of the last, eg 1000 events per listener showing a) how long 
 the event took to be created/generated and b) how long the listener took to 
 process. Sometimes averages are not detailed enough so such a in-depth 
 information might become useful. (Not sure about the feasibility of '1000' 
 here - maybe that could be configurable though - just putting the idea out 
 here).
 # have some information about whether a listener is currently 'reading events 
 from the cache' or whether it has to go to eg mongo 
 # maybe have a 'top 10' listeners that have the largest queue at the moment 
 to easily allow navigation instead of having to go through all (eg 200) 
 listeners manually each time.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread JIRA

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

Michael Dürig commented on OAK-2476:


To add to that we should have 1.0 vs trunk as an further dimension. 

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Thomas Mueller (JIRA)

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

Thomas Mueller commented on OAK-2557:
-

I made some code coverage tests, and it looks very good to me. What is not 
covered by deleteLargeNumber are:

{noformat}
collectDeletedDocuments
..
docIdsToDelete.add(prevDoc.getId());  this
..
if (docIdsToDelete.isEmpty()){
return;  this
}
..
if (log.isDebugEnabled()  docIdsToDelete.getSize()  1000) {
..  this
}
{noformat}

The log part has a side effect (docIdsToDelete.getIds(), which might open new 
files)

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.0.13, 1.2

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Thomas Mueller (JIRA)

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

Thomas Mueller commented on OAK-2557:
-

I assume the document ids can not contain strange characters (newlines), right?

I noticed with debug level logging, the removed entries are logged, but only up 
to 1000. Maybe it's better to log in all cases? The list is iterated over twice 
in this case (for logging and for removing), but the logic looks good to me. 

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.0.13, 1.2

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Thomas Mueller (JIRA)

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

Thomas Mueller commented on OAK-2557:
-

[~egli], I think createTempFile can not create directories (which is what we 
need here).

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.0.13, 1.2

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-2617) Provide config parameter for timing out longrunning/inefficient queries

2015-03-12 Thread JIRA

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

Michael Dürig updated OAK-2617:
---
Assignee: Stefan Egli

 Provide config parameter for timing out longrunning/inefficient queries
 ---

 Key: OAK-2617
 URL: https://issues.apache.org/jira/browse/OAK-2617
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: mongomk
Affects Versions: 1.0.12
Reporter: Stefan Egli
Assignee: Stefan Egli
 Fix For: 1.0.13

 Attachments: OAK-2617.patch


 There have been cases where mongo queries where running for a very long time 
 due to inefficient use of indexes or wrong indexes - mostly due to resulting 
 traversals of loads of child nodes.
 While a proper fix for this is likely to be found in properly hinting at the 
 right index (or by not hinting at all and letting mongo decide) - it might 
 nevertheless be a good fallback plan to let queries not run for an infinite 
 amount of time in case 'something went wrong/inefficient'.
 For that, mongo provides a timeout for queries, see 
 [here|http://mongodb.github.io/node-mongodb-native/driver-articles/anintroductionto1_4_and_2_6.html#maxtimems].
 The suggestion is to make use of this by providing a system property that 
 would set this.
 I'll come up with a patch for this.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-2617) Provide config parameter for timing out longrunning/inefficient queries

2015-03-12 Thread Stefan Egli (JIRA)

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

Stefan Egli updated OAK-2617:
-
Attachment: OAK-2617.patch

Attached [^OAK-2617.patch] with a suggested implementation.
[~chetanm], [~mreutegg], could you pls have a look? thx!

 Provide config parameter for timing out longrunning/inefficient queries
 ---

 Key: OAK-2617
 URL: https://issues.apache.org/jira/browse/OAK-2617
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: mongomk
Affects Versions: 1.0.12
Reporter: Stefan Egli
Assignee: Stefan Egli
 Fix For: 1.0.13

 Attachments: OAK-2617.patch


 There have been cases where mongo queries where running for a very long time 
 due to inefficient use of indexes or wrong indexes - mostly due to resulting 
 traversals of loads of child nodes.
 While a proper fix for this is likely to be found in properly hinting at the 
 right index (or by not hinting at all and letting mongo decide) - it might 
 nevertheless be a good fallback plan to let queries not run for an infinite 
 amount of time in case 'something went wrong/inefficient'.
 For that, mongo provides a timeout for queries, see 
 [here|http://mongodb.github.io/node-mongodb-native/driver-articles/anintroductionto1_4_and_2_6.html#maxtimems].
 The suggestion is to make use of this by providing a system property that 
 would set this.
 I'll come up with a patch for this.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread Davide Giannella (JIRA)

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

Davide Giannella commented on OAK-2476:
---

+1 for changing the variable if needed.

In terms of profiles as we discussed off ticket I would suggest to 

- unittesting. Run once against all the fixtures it never gave any problem. 
{{-Punittesting -Dns-fixtures=}}

- split {{pedantic}} and {{integrationTesting}} if not an hassle.

- having the the IT split as following
  - Segment_MK
  - Document_MK, Document_NS
  - Document_RDB.



 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili commented on OAK-2476:
--

for that I'd probably opt for creating a different job (the same with different 
SVN path), to keep separate build histories, in the long run I expect branch 
1.0 to be more stable and that should be reflected by the builds history 
(hopefully :) ).

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-2616) GCMonitorMBean#getRepositorySize reports incorrect values

2015-03-12 Thread JIRA
Michael Dürig created OAK-2616:
--

 Summary: GCMonitorMBean#getRepositorySize reports incorrect values
 Key: OAK-2616
 URL: https://issues.apache.org/jira/browse/OAK-2616
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core
Reporter: Michael Dürig
Assignee: Michael Dürig
 Fix For: 1.1.8, 1.0.13


The values of said method are of as the counter does not reset each seconds 
while at the same time the values reported to the counter are accumulated 
instead of sampled. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-2617) Provide config parameter for timing out longrunning/inefficient queries

2015-03-12 Thread Stefan Egli (JIRA)
Stefan Egli created OAK-2617:


 Summary: Provide config parameter for timing out 
longrunning/inefficient queries
 Key: OAK-2617
 URL: https://issues.apache.org/jira/browse/OAK-2617
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: mongomk
Affects Versions: 1.0.12
Reporter: Stefan Egli
 Fix For: 1.0.13


There have been cases where mongo queries where running for a very long time 
due to inefficient use of indexes or wrong indexes - mostly due to resulting 
traversals of loads of child nodes.

While a proper fix for this is likely to be found in properly hinting at the 
right index (or by not hinting at all and letting mongo decide) - it might 
nevertheless be a good fallback plan to let queries not run for an infinite 
amount of time in case 'something went wrong/inefficient'.

For that, mongo provides a timeout for queries, see 
[here|http://mongodb.github.io/node-mongodb-native/driver-articles/anintroductionto1_4_and_2_6.html#maxtimems].

The suggestion is to make use of this by providing a system property that would 
set this.

I'll come up with a patch for this.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-2617) Provide config parameter for timing out longrunning/inefficient queries

2015-03-12 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger resolved OAK-2617.
---
   Resolution: Duplicate
Fix Version/s: (was: 1.0.13)

Thanks for the patch. I already created an issue earlier today: OAK-2614.

 Provide config parameter for timing out longrunning/inefficient queries
 ---

 Key: OAK-2617
 URL: https://issues.apache.org/jira/browse/OAK-2617
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: mongomk
Affects Versions: 1.0.12
Reporter: Stefan Egli
Assignee: Stefan Egli
 Attachments: OAK-2617.patch


 There have been cases where mongo queries where running for a very long time 
 due to inefficient use of indexes or wrong indexes - mostly due to resulting 
 traversals of loads of child nodes.
 While a proper fix for this is likely to be found in properly hinting at the 
 right index (or by not hinting at all and letting mongo decide) - it might 
 nevertheless be a good fallback plan to let queries not run for an infinite 
 amount of time in case 'something went wrong/inefficient'.
 For that, mongo provides a timeout for queries, see 
 [here|http://mongodb.github.io/node-mongodb-native/driver-articles/anintroductionto1_4_and_2_6.html#maxtimems].
 The suggestion is to make use of this by providing a system property that 
 would set this.
 I'll come up with a patch for this.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-2618) Improve performance of queries with ORDER BY and multiple OR filters

2015-03-12 Thread Amit Jain (JIRA)
Amit Jain created OAK-2618:
--

 Summary: Improve performance of queries with ORDER BY and multiple 
OR filters
 Key: OAK-2618
 URL: https://issues.apache.org/jira/browse/OAK-2618
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: query
Reporter: Amit Jain
 Fix For: 1.4


When multiple OR constraints are specified in the XPATH query, itis broken up 
into union of multiple clauses. If query includes an order by clause, the 
sorting in this case is done by traversing the result set in memory leading to 
slow query performance.

Possible improvements could include:
* For indexes which can support multiple filters (like lucene, solr) such 
queries should be efficient and the query engine can pass-thru the query as is.
** Possibly also needed for other cases also. So, we can have some sort of 
capability advertiser for indexes which can hint the query engine 

and/or
* Batched merging of the sorted iterators returned for the multiple union 
queries (possible externally).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread Davide Giannella (JIRA)

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

Davide Giannella commented on OAK-2476:
---

keep in mind that for 1.0 we don't have the concept of fixtures in the build. 
It was not backported. So for 1.0 it will be a simple mvn clean verify/install 
-PintegrationTesting,pedantic

(to be double-checked)

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread JIRA

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

Michael Dürig commented on OAK-2476:


+1

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Stefan Egli (JIRA)

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

Stefan Egli commented on OAK-2557:
--

bq. [~tmueller] I think createTempFile can not create directories (which is 
what we need here).
[right|http://stackoverflow.com/questions/617414/create-a-temporary-directory-in-java],
 I see

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.0.13, 1.2

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-2616) GCMonitorMBean#getRepositorySize reports incorrect values

2015-03-12 Thread JIRA

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

Michael Dürig resolved OAK-2616.

Resolution: Fixed

Fixed in trunk at http://svn.apache.org/r1666177 and in the 1.0 branch at 
http://svn.apache.org/r1666179

 GCMonitorMBean#getRepositorySize reports incorrect values
 -

 Key: OAK-2616
 URL: https://issues.apache.org/jira/browse/OAK-2616
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core
Reporter: Michael Dürig
Assignee: Michael Dürig
 Fix For: 1.1.8, 1.0.13


 The values of said method are of as the counter does not reset each seconds 
 while at the same time the values reported to the counter are accumulated 
 instead of sampled. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili commented on OAK-2476:
--

thanks [~edivad], I'll try to setup what you suggest.
In the meanwhile I've changed the _ns-fixtures_ variable to _nsfixtures_ in 
r1666181.

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread JIRA

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

Michael Dürig commented on OAK-2557:


You can do

{code}
  directory = File.createTempFile();
  directory.delete();
  directory.mkdir();
{code}

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.0.13, 1.2

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-2557:
--

bq. I noticed with debug level logging, the removed entries are logged, but 
only up to 1000

Can do that. But like in current case the list might be pretty big 12M. So 
avoided flooding the logs

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.0.13, 1.2

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Thomas Mueller (JIRA)

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

Thomas Mueller commented on OAK-2557:
-

I think large log files are acceptable, maybe it could help us see the progress?

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.0.13, 1.2

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-2623) Add test for GC of previous docs of a deleted document

2015-03-12 Thread Chetan Mehrotra (JIRA)
Chetan Mehrotra created OAK-2623:


 Summary: Add test for GC of previous docs of a deleted document
 Key: OAK-2623
 URL: https://issues.apache.org/jira/browse/OAK-2623
 Project: Jackrabbit Oak
  Issue Type: Task
  Components: mongomk
Reporter: Chetan Mehrotra
Assignee: Chetan Mehrotra
Priority: Minor
 Fix For: 1.2


As 
[noted|https://issues.apache.org/jira/browse/OAK-2557?focusedCommentId=14358704#comment-14358704]
 by [~tmueller] we do not have a test coverage for case when a deleted document 
has previous documents and Version GC should also remove those previous 
documents



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-2615) oak-pojosr tests fail

2015-03-12 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra resolved OAK-2615.
--
Resolution: Fixed

 oak-pojosr tests fail
 -

 Key: OAK-2615
 URL: https://issues.apache.org/jira/browse/OAK-2615
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: pojosr
Reporter: Michael Dürig
Assignee: Chetan Mehrotra
 Fix For: 1.1.8


 The build fails for me in {{oak-pojosr}} with many failures like:
 {noformat}
 Running org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest
 Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 10.142 sec 
  FAILURE!
 testNodeStoreWithBlobStore_OAK_1676(org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest)
   Time elapsed: 10.138 sec   FAILURE!
 java.lang.AssertionError: No service found for 
 org.apache.jackrabbit.oak.spi.state.NodeStore. Expression: sr. Values: sr = 
 null
   at 
 org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:400)
   at 
 org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:646)
   at 
 org.apache.jackrabbit.oak.run.osgi.AbstractRepositoryFactoryTest.getServiceWithWait(AbstractRepositoryFactoryTest.groovy:82)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at 
 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:207)
   at 
 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:56)
   at 
 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
   at 
 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
   at 
 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
   at 
 org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest.testNodeStoreWithBlobStore_OAK_1676(NodeStoreConfigTest.groovy:41)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at 
 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
   at 
 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
   at 
 org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
   at 
 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
   at 
 org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
   at 
 org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
   at 
 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
   at 
 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
   at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
   at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
   at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
   at 
 org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
   at 
 org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
   at 
 org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at 
 org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
   at 
 org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
   at 
 org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
   at 
 

[jira] [Commented] (OAK-2615) oak-pojosr tests fail

2015-03-12 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-2615:
--

Checked the unit-test.log which indicate the dependency on commons-io. So yes 
adding that as a dependency would be the proper fix

{noformat}
13.03.2015 10:35:47.095 *ERROR* [main] org.apache.jackrabbit.oak-core 
[org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService(18)] The 
activate method has thrown an exception (java.lang.NoClassDefFoundError: 
org/apache/commons/io/Charsets)
java.lang.NoClassDefFoundError: org/apache/commons/io/Charsets
at 
org.apache.jackrabbit.oak.plugins.segment.file.ReversedLinesFileReader.init(ReversedLinesFileReader.java:150)
 ~[oak-core-1.1-SNAPSHOT.jar:1.1-SNAPSHOT]
at 
org.apache.jackrabbit.oak.plugins.segment.file.ReversedLinesFileReader.init(ReversedLinesFileReader.java:67)
 ~[oak-core-1.1-SNAPSHOT.jar:1.1-SNAPSHOT]
at 
org.apache.jackrabbit.oak.plugins.segment.file.JournalReader.init(JournalReader.java:40)
 ~[oak-core-1.1-SNAPSHOT.jar:1.1-SNAPSHOT]
at 
org.apache.jackrabbit.oak.plugins.segment.file.FileStore.init(FileStore.java:368)
 ~[oak-core-1.1-SNAPSHOT.jar:1.1-SNAPSHOT]
at 
org.apache.jackrabbit.oak.plugins.segment.file.FileStore.init(FileStore.java:82)
 ~[oak-core-1.1-SNAPSHOT.jar:1.1-SNAPSHOT]
at 
org.apache.jackrabbit.oak.plugins.segment.file.FileStore$Builder.create(FileStore.java:288)
 ~[oak-core-1.1-SNAPSHOT.jar:1.1-SNAPSHOT]
at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.registerSegmentStore(SegmentNodeStoreService.java:322)
 ~[oak-core-1.1-SNAPSHOT.jar:1.1-SNAPSHOT]
at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.registerNodeStore(SegmentNodeStoreService.java:236)
 ~[oak-core-1.1-SNAPSHOT.jar:1.1-SNAPSHOT]
at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.activate(SegmentNodeStoreService.java:231)
 ~[oak-core-1.1-SNAPSHOT.jar:1.1-SNAPSHOT]

{noformat}

 oak-pojosr tests fail
 -

 Key: OAK-2615
 URL: https://issues.apache.org/jira/browse/OAK-2615
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: pojosr
Reporter: Michael Dürig
Assignee: Chetan Mehrotra
 Fix For: 1.1.8


 The build fails for me in {{oak-pojosr}} with many failures like:
 {noformat}
 Running org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest
 Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 10.142 sec 
  FAILURE!
 testNodeStoreWithBlobStore_OAK_1676(org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest)
   Time elapsed: 10.138 sec   FAILURE!
 java.lang.AssertionError: No service found for 
 org.apache.jackrabbit.oak.spi.state.NodeStore. Expression: sr. Values: sr = 
 null
   at 
 org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:400)
   at 
 org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:646)
   at 
 org.apache.jackrabbit.oak.run.osgi.AbstractRepositoryFactoryTest.getServiceWithWait(AbstractRepositoryFactoryTest.groovy:82)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at 
 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:207)
   at 
 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:56)
   at 
 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
   at 
 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
   at 
 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
   at 
 org.apache.jackrabbit.oak.run.osgi.NodeStoreConfigTest.testNodeStoreWithBlobStore_OAK_1676(NodeStoreConfigTest.groovy:41)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at 
 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
   at 
 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
   at 
 org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
   at 
 

[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-2557:
--

Minor nit pick there :)

Above approach creates a potential security risk as per [Guava 
Files|http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/io/Files.html#createTempDir%28%29].
 Though those risks do not apply in our usecase!

{quote}
Use this method instead of File.createTempFile(String, String) when you wish to 
create a directory, not a regular file. A common pitfall is to call 
createTempFile, delete the file and create a directory in its place, but this 
leads a race condition which can be exploited to create security 
vulnerabilities, especially when executable files are to be written into the 
directory. 
{quote}

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.1.8, 1.0.13

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-2557:
--

bq. maybe it could help us see the progress

That would be useful. Changed the impl a bit with 
http://svn.apache.org/r1666352. Would that meet the requirements

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.1.8, 1.0.13

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-2557:
--

bq. docIdsToDelete.add(prevDoc.getId());  this

Thats important and should be covered by a test. Opened OAK-2623 for that

bq. The log part has a side effect (docIdsToDelete.getIds(), which might open 
new files)

Changed the log part to not have that side effect

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.1.8, 1.0.13

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (OAK-1826) Empty directories not cleaned up when gc run on FileDataStore

2015-03-12 Thread Amit Jain (JIRA)

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

Amit Jain reassigned OAK-1826:
--

Assignee: Amit Jain

 Empty directories not cleaned up when gc run on FileDataStore
 -

 Key: OAK-1826
 URL: https://issues.apache.org/jira/browse/OAK-1826
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: blob
Reporter: Amit Jain
Assignee: Amit Jain
Priority: Minor
 Fix For: 1.1.9


 The garbage collection only deletes the particular files identified as 
 garbage. Any empty directories remaining after this operation are not cleaned 
 up.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-1826) Empty directories not cleaned up when gc run on FileDataStore

2015-03-12 Thread Amit Jain (JIRA)

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

Amit Jain updated OAK-1826:
---
Fix Version/s: 1.1.9

 Empty directories not cleaned up when gc run on FileDataStore
 -

 Key: OAK-1826
 URL: https://issues.apache.org/jira/browse/OAK-1826
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: blob
Reporter: Amit Jain
Assignee: Amit Jain
Priority: Minor
 Fix For: 1.1.9


 The garbage collection only deletes the particular files identified as 
 garbage. Any empty directories remaining after this operation are not cleaned 
 up.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-2614) Timeout for MongoDB query

2015-03-12 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger resolved OAK-2614.
---
Resolution: Fixed

Introduced a system property as suggested by [~egli] in OAK-2617.

The system property is named {{oak.mongo.maxQueryTimeMS}} and is a timeout in 
milliseconds. 

Done in trunk: http://svn.apache.org/r1666218

 Timeout for MongoDB query
 -

 Key: OAK-2614
 URL: https://issues.apache.org/jira/browse/OAK-2614
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, mongomk
Reporter: Marcel Reutegger
Assignee: Marcel Reutegger
 Fix For: 1.1.8


 MongoDB 2.6 introduced a query timeout which allows a client to specify a 
 time how long a query is allowed to execute.
 I'd like to introduce this as a configurable feature to better control 
 resource usage in MongoDB and stop too expensive queries.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger resolved OAK-2557.
---
   Resolution: Fixed
Fix Version/s: (was: 1.2)
   1.1.8

Chetan committed the patch to trunk: http://svn.apache.org/r1666220

and merged it to 1.0: http://svn.apache.org/r1666221

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.1.8, 1.0.13

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili commented on OAK-2476:
--

I've had a couple of additional issues with Jenkins not being able to couple 
with parenthesis and commas in axis values, anyway the basic configuration 
should be ok.

For the record during the [currently running 
build|https://builds.apache.org/job/Apache%20Jackrabbit%20Oak%20matrix/11/] at 
lest one job running on Windows failed because of the Jenkins slave disk being 
full, while the one(s) running on Ubuntu seem to be going ok.

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili commented on OAK-2476:
--

Also one more thing to add is trigger notifications to oak-dev@ as soon as this 
looks stable and reliable enough to start bothering us each day :)

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili edited comment on OAK-2476 at 3/12/15 3:53 PM:
---

I've had a couple of additional issues with Jenkins not being able to cope with 
parenthesis and commas in axis values, anyway the basic configuration should be 
ok.

For the record during the [currently running 
build|https://builds.apache.org/job/Apache%20Jackrabbit%20Oak%20matrix/11/] at 
lest one job running on Windows failed because of the Jenkins slave disk being 
full, while the one(s) running on Ubuntu seem to be going ok.

Once the build configuration has proved to be ok, I'll remove the previously 
created Jenkins jobs (one for each JDK).


was (Author: teofili):
I've had a couple of additional issues with Jenkins not being able to cope with 
parenthesis and commas in axis values, anyway the basic configuration should be 
ok.

For the record during the [currently running 
build|https://builds.apache.org/job/Apache%20Jackrabbit%20Oak%20matrix/11/] at 
lest one job running on Windows failed because of the Jenkins slave disk being 
full, while the one(s) running on Ubuntu seem to be going ok.

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili edited comment on OAK-2476 at 3/12/15 3:51 PM:
---

I've had a couple of additional issues with Jenkins not being able to cope with 
parenthesis and commas in axis values, anyway the basic configuration should be 
ok.

For the record during the [currently running 
build|https://builds.apache.org/job/Apache%20Jackrabbit%20Oak%20matrix/11/] at 
lest one job running on Windows failed because of the Jenkins slave disk being 
full, while the one(s) running on Ubuntu seem to be going ok.


was (Author: teofili):
I've had a couple of additional issues with Jenkins not being able to couple 
with parenthesis and commas in axis values, anyway the basic configuration 
should be ok.

For the record during the [currently running 
build|https://builds.apache.org/job/Apache%20Jackrabbit%20Oak%20matrix/11/] at 
lest one job running on Windows failed because of the Jenkins slave disk being 
full, while the one(s) running on Ubuntu seem to be going ok.

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread JIRA

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

Michael Dürig commented on OAK-2476:


I just realised that the Maven profile configuration didn't work as expected. 
The builds would haven been started with {{mvn clean install 
-Dprofile=unittesting}} instead of {{mvn clean install -Punittesting}}. 
Together with [~mirko] we hopefully figured it out, changed the configuration 
and restarted the job. 

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-2619) Support merging content during upgrade

2015-03-12 Thread Julian Sedding (JIRA)
Julian Sedding created OAK-2619:
---

 Summary: Support merging content during upgrade
 Key: OAK-2619
 URL: https://issues.apache.org/jira/browse/OAK-2619
 Project: Jackrabbit Oak
  Issue Type: New Feature
  Components: upgrade
Affects Versions: 1.1.7
Reporter: Julian Sedding
Priority: Minor


When upgrading from Jackrabbit 2 to Oak there are several scenarios that could 
benefit from the ability to merge content rather than overwrite it. Especially 
in combination with OAK-2586, i.e. support to include/exclude selected paths 
from the copy operation, merging can become very useful.

# Start vanilla product with an empty repo that writes some initial content, 
then copy content from a Jackrabbit 2 repo into this instance
# Unify content from several Jackrabbit 2 repositories into a single Oak repo
# Copy all content 1 week before the actual migration, then merge in the diff 
on migration day




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili commented on OAK-2476:
--

thanks Mirko and Michael for fixing it, I had thought that would have been 
behaving the same way.

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-2287) ConflictHandler for merging jcr:lastModified

2015-03-12 Thread JIRA

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

Michael Dürig updated OAK-2287:
---
Attachment: OAK-2287-3.patch

Updated patch: [^OAK-2287-3.patch]:
* A bit more test coverage and a bit of cleanup
* I removed the conflict resolution for the said cases where the conflict is 
not between actual values but between deletion and values. I think this case is 
best left at the default behaviour. 


 ConflictHandler for merging jcr:lastModified
 

 Key: OAK-2287
 URL: https://issues.apache.org/jira/browse/OAK-2287
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, jcr
Reporter: Alex Parvulescu
Assignee: Alex Parvulescu
Priority: Minor
 Fix For: 1.2

 Attachments: OAK-2287-2.patch, OAK-2287-3.patch, OAK-2287.patch


 As discussed on oak-dev, 'jcr:lastModified' is a date property and it 
 represents the last modification date. It makes sense to merge concurrent 
 updates by picking the newer date of the 2 options.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-2622) dynamic cache allocation

2015-03-12 Thread Stefan Egli (JIRA)
Stefan Egli created OAK-2622:


 Summary: dynamic cache allocation
 Key: OAK-2622
 URL: https://issues.apache.org/jira/browse/OAK-2622
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: mongomk
Affects Versions: 1.0.12
Reporter: Stefan Egli
 Fix For: 1.4


At the moment mongoMk's various caches are configurable (OAK-2546) but other 
than that static in terms of size. Different use-cases might require different 
allocations of the sub caches though. And it might not always be possible to 
find a good configuration upfront for all use cases. 

We might be able to come up with a dynamically allocating the overall cache 
size to the different sub-caches, based on which cache is how heavily loaded 
for example.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2546) allow configuring subcaches of documentnodestore individually

2015-03-12 Thread Stefan Egli (JIRA)

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

Stefan Egli commented on OAK-2546:
--

Created follow-up idea 'dynamic cache allocation' in OAK-2622

 allow configuring subcaches of documentnodestore individually
 -

 Key: OAK-2546
 URL: https://issues.apache.org/jira/browse/OAK-2546
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: mongomk
Affects Versions: 1.0.11, 1.1.6
Reporter: Stefan Egli
Assignee: Marcel Reutegger
 Fix For: 1.0.12, 1.1.7


 Currently there's one config for the DocumentNodeStore's (actually 
 DocumentMk) caches (Documents, Diff, DocChildren, NodeChildren, NodeState) as 
 a whole, and it distributes to each of those subcaches in a [hard-coded 
 way|https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java#L732].
  It would be good to be able to configure the individual sub-caches 
 individually (be it in percentage or absolute)
 The reason I bring this up is where I think it might be useful to try out 
 giving the NodeChildren relatively more cache as it turned out during a 
 heavy-load test that observation queues were starting to grow at the same 
 point in time when the NodeChildren cache started to perform badly. While the 
 problem there is relative bad performance of one or a few observation 
 listeners, it could nevertheless help bridge a situation when the 
 NodeChildren cache contains a longer 'history' so that the slow listener 
 could catch up.
 PS: Leaving it up to discussion as to whether this goes into 1.0 branch or not



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-2622) dynamic cache allocation

2015-03-12 Thread Stefan Egli (JIRA)

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

Stefan Egli updated OAK-2622:
-
Description: 
At the moment mongoMk's various caches are configurable (OAK-2546) but other 
than that static in terms of size. Different use-cases might require different 
allocations of the sub caches though. And it might not always be possible to 
find a good configuration upfront for all use cases. 

We might be able to come up with dynamically allocating the overall cache size 
to the different sub-caches, based on which cache is how heavily loaded for 
example.

  was:
At the moment mongoMk's various caches are configurable (OAK-2546) but other 
than that static in terms of size. Different use-cases might require different 
allocations of the sub caches though. And it might not always be possible to 
find a good configuration upfront for all use cases. 

We might be able to come up with a dynamically allocating the overall cache 
size to the different sub-caches, based on which cache is how heavily loaded 
for example.


 dynamic cache allocation
 

 Key: OAK-2622
 URL: https://issues.apache.org/jira/browse/OAK-2622
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: mongomk
Affects Versions: 1.0.12
Reporter: Stefan Egli
 Fix For: 1.4


 At the moment mongoMk's various caches are configurable (OAK-2546) but other 
 than that static in terms of size. Different use-cases might require 
 different allocations of the sub caches though. And it might not always be 
 possible to find a good configuration upfront for all use cases. 
 We might be able to come up with dynamically allocating the overall cache 
 size to the different sub-caches, based on which cache is how heavily loaded 
 for example.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-2622) dynamic cache allocation

2015-03-12 Thread Stefan Egli (JIRA)

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

Stefan Egli updated OAK-2622:
-
Description: 
At the moment mongoMk's various caches are configurable (OAK-2546) but other 
than that static in terms of size. Different use-cases might require different 
allocations of the sub caches though. And it might not always be possible to 
find a good configuration upfront for all use cases. 

We might be able to come up with dynamically allocating the overall cache size 
to the different sub-caches, based on which cache is how heavily loaded or how 
well performing for example.

  was:
At the moment mongoMk's various caches are configurable (OAK-2546) but other 
than that static in terms of size. Different use-cases might require different 
allocations of the sub caches though. And it might not always be possible to 
find a good configuration upfront for all use cases. 

We might be able to come up with dynamically allocating the overall cache size 
to the different sub-caches, based on which cache is how heavily loaded for 
example.


 dynamic cache allocation
 

 Key: OAK-2622
 URL: https://issues.apache.org/jira/browse/OAK-2622
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: mongomk
Affects Versions: 1.0.12
Reporter: Stefan Egli
 Fix For: 1.4


 At the moment mongoMk's various caches are configurable (OAK-2546) but other 
 than that static in terms of size. Different use-cases might require 
 different allocations of the sub caches though. And it might not always be 
 possible to find a good configuration upfront for all use cases. 
 We might be able to come up with dynamically allocating the overall cache 
 size to the different sub-caches, based on which cache is how heavily loaded 
 or how well performing for example.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-2614) Timeout for MongoDB query

2015-03-12 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger updated OAK-2614:
--
Fix Version/s: 1.0.13

Merged into 1.0 branch: http://svn.apache.org/r1666223

 Timeout for MongoDB query
 -

 Key: OAK-2614
 URL: https://issues.apache.org/jira/browse/OAK-2614
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, mongomk
Reporter: Marcel Reutegger
Assignee: Marcel Reutegger
 Fix For: 1.1.8, 1.0.13


 MongoDB 2.6 introduced a query timeout which allows a client to specify a 
 time how long a query is allowed to execute.
 I'd like to introduce this as a configurable feature to better control 
 resource usage in MongoDB and stop too expensive queries.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (OAK-1981) Implement full scale Revision GC for DocumentNodeStore

2015-03-12 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger reassigned OAK-1981:
-

Assignee: Marcel Reutegger

 Implement full scale Revision GC for DocumentNodeStore
 --

 Key: OAK-1981
 URL: https://issues.apache.org/jira/browse/OAK-1981
 Project: Jackrabbit Oak
  Issue Type: New Feature
  Components: mongomk
Reporter: Chetan Mehrotra
Assignee: Marcel Reutegger
 Fix For: 1.1.9


 So far we have implemented garbage collection in some form with OAK-1341. 
 Those approaches help us remove quite a bit of garbage (mostly due to deleted 
 nodes) but till some part is left
 However full GC is still not performed due to which some of the old revision 
 related data cannot be GCed like
 * Revision info present in revision maps of various commit roots
 * Revision related to unmerged branches (OAK-1926)
 * Revision data created to property being modified by different cluster nodes
 So having a tool which can perform above GC would be helpful. For start we 
 can have an implementation which takes a brute force approach and scans whole 
 repo (would take quite a bit of time) and later we can evolve it. Or allow 
 system admins to determine to what level GC has to be done



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-1981) Implement full scale Revision GC for DocumentNodeStore

2015-03-12 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger updated OAK-1981:
--
Fix Version/s: (was: 1.2)
   1.1.9

 Implement full scale Revision GC for DocumentNodeStore
 --

 Key: OAK-1981
 URL: https://issues.apache.org/jira/browse/OAK-1981
 Project: Jackrabbit Oak
  Issue Type: New Feature
  Components: mongomk
Reporter: Chetan Mehrotra
 Fix For: 1.1.9


 So far we have implemented garbage collection in some form with OAK-1341. 
 Those approaches help us remove quite a bit of garbage (mostly due to deleted 
 nodes) but till some part is left
 However full GC is still not performed due to which some of the old revision 
 related data cannot be GCed like
 * Revision info present in revision maps of various commit roots
 * Revision related to unmerged branches (OAK-1926)
 * Revision data created to property being modified by different cluster nodes
 So having a tool which can perform above GC would be helpful. For start we 
 can have an implementation which takes a brute force approach and scans whole 
 repo (would take quite a bit of time) and later we can evolve it. Or allow 
 system admins to determine to what level GC has to be done



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-2621) Too many reads for child nodes

2015-03-12 Thread Marcel Reutegger (JIRA)
Marcel Reutegger created OAK-2621:
-

 Summary: Too many reads for child nodes
 Key: OAK-2621
 URL: https://issues.apache.org/jira/browse/OAK-2621
 Project: Jackrabbit Oak
  Issue Type: Bug
Affects Versions: 1.0
Reporter: Marcel Reutegger
Priority: Minor
 Fix For: 1.1.9


The DocumentNodeStore issues a lot of reads when sibling nodes are deleted, 
which are also index with a property index.

The following calls will become a hotspot:

{noformat}
at 
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore.query(MongoDocumentStore.java:406)
at 
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.readChildDocs(DocumentNodeStore.java:846)
at 
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.readChildren(DocumentNodeStore.java:788)
at 
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.getChildren(DocumentNodeStore.java:753)
at 
org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.getChildNodeCount(DocumentNodeState.java:194)
at 
org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.getChildNodeCount(ModifiedNodeState.java:198)
at 
org.apache.jackrabbit.oak.plugins.memory.MutableNodeState.getChildNodeCount(MutableNodeState.java:265)
at 
org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder.getChildNodeCount(MemoryNodeBuilder.java:293)
at 
org.apache.jackrabbit.oak.plugins.index.property.strategy.ContentMirrorStoreStrategy.prune(ContentMirrorStoreStrategy.java:456)
{noformat}

I think the code triggering this issue is in 
{{ModifiedNodeState.getChildNodeCount()}}. It keeps track of already deleted 
children and requests {{max += deleted}}. The actual {{max}} is always 1 as 
requested from {{ContentMirrorStoreStrategy.prune()}}, but as more nodes get 
deleted, the higher {{max}} gets passed to 
{{DocumentNodeState.getChildNodeCount()}}. The DocumentNodeStore then checks if 
it has the children in the cache, only to find out the cache entry has too few 
entries and it needs to fetch one more.

It would be best to have a minimum number of child nodes to fetch from MongoDB 
in this case. E.g. when NodeState.getChildNodeEntries() is called, the 
DocumentNodeState fetches 100 children.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2596) more (jmx) instrumentation for observation queue

2015-03-12 Thread JIRA

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

Michael Dürig commented on OAK-2596:


Initial implementation at my Github fork: 
https://github.com/mduerig/jackrabbit-oak/tree/OAK-2596. You need a recent 
Jackrabbit 2.9-SNAPSHOT build for this. 

As this depends on the Jackrabbit 2.9.2 release I bump the fix version to 1.1.9

 more (jmx) instrumentation for observation queue
 

 Key: OAK-2596
 URL: https://issues.apache.org/jira/browse/OAK-2596
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Affects Versions: 1.0.12
Reporter: Stefan Egli
Assignee: Michael Dürig
  Labels: monitoring, observation
 Fix For: 1.0.13, 1.1.9


 While debugging issues with the observation queue it would be handy to have 
 more detailed information available. At the moment you can only see one value 
 wrt length of the queue: that is the maximum of all queues. It is unclear if 
 the queue is that long for only one or many listeners. And it is unclear from 
 that if the listener is slow or the engine that produces the events for the 
 listener.
 So I'd suggest to add the following details - possible exposed via JMX? :
 # add queue length details to each of the observation listeners
 # have a history of the last, eg 1000 events per listener showing a) how long 
 the event took to be created/generated and b) how long the listener took to 
 process. Sometimes averages are not detailed enough so such a in-depth 
 information might become useful. (Not sure about the feasibility of '1000' 
 here - maybe that could be configurable though - just putting the idea out 
 here).
 # have some information about whether a listener is currently 'reading events 
 from the cache' or whether it has to go to eg mongo 
 # maybe have a 'top 10' listeners that have the largest queue at the moment 
 to easily allow navigation instead of having to go through all (eg 200) 
 listeners manually each time.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2557) VersionGC uses way too much memory if there is a large pile of garbage

2015-03-12 Thread Stefan Egli (JIRA)

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

Stefan Egli commented on OAK-2557:
--

Only a small comment/question: is there a reason you're doing the temp file 
creation manually vs using {{java.io.File.createTempFile}} ?

 VersionGC uses way too much memory if there is a large pile of garbage
 --

 Key: OAK-2557
 URL: https://issues.apache.org/jira/browse/OAK-2557
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, mongomk
Affects Versions: 1.0.11
Reporter: Stefan Egli
Assignee: Chetan Mehrotra
Priority: Blocker
 Fix For: 1.0.13, 1.2

 Attachments: OAK-2557-2.patch, OAK-2557-3.patch, OAK-2557.patch


 It has been noticed that on a system where revision-gc 
 (VersionGarbageCollector of mongomk) did not run for a few days (due to not 
 interfering with some tests/large bulk operations) that there was such a 
 large pile of garbage accumulating, that the following code
 {code}
 VersionGarbageCollector.collectDeletedDocuments
 {code}
 in the for loop, creates such a large list of NodeDocuments to delete 
 (docIdsToDelete) that it uses up too much memory, causing the JVM's GC to 
 constantly spin in Full-GCs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (OAK-2500) checkDeepHistory/fixDeepHistory/prepareDeepHistory for oak-mongo.js

2015-03-12 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger reassigned OAK-2500:
-

Assignee: Marcel Reutegger

 checkDeepHistory/fixDeepHistory/prepareDeepHistory for oak-mongo.js
 ---

 Key: OAK-2500
 URL: https://issues.apache.org/jira/browse/OAK-2500
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: run
Affects Versions: 1.0.8
Reporter: Stefan Egli
Assignee: Marcel Reutegger
 Fix For: 1.0.13

 Attachments: oak-mongo-mod.js


 The oak-mongo.js currently contains checkHistory/fixHistory which are 
 cleaning up 'dangling revisions/split-documents' on a particular path.
 Now it would be good to have a command that goes through the entire 
 repository and checks/fixes these dangling revisions.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2476) Move our CI to Jenkins

2015-03-12 Thread JIRA

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

Michael Dürig commented on OAK-2476:


Thanks Tommaso! Feel free to contact [~mirko] if needed as he has a lot of 
Jenkins experience.

 Move our CI to Jenkins
 --

 Key: OAK-2476
 URL: https://issues.apache.org/jira/browse/OAK-2476
 Project: Jackrabbit Oak
  Issue Type: Task
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
Priority: Critical
  Labels: CI, build, infrastructure
 Fix For: 1.1.8, 1.2


 We should strive for stabilization of our CI setup, as of now we had Buildbot 
 and Travis.
 It seems ASF Jenkins can perform jobs on different environments (*nix, 
 Windows and others) so we can evaluate that and check if it better address 
 our needs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2612) Findbugs plugin version should depend on JDK version

2015-03-12 Thread JIRA

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

Michael Dürig commented on OAK-2612:


I think we should drop it after 1.2. Let's the discussion up again for 1.3.x

 Findbugs plugin version should depend on JDK version
 

 Key: OAK-2612
 URL: https://issues.apache.org/jira/browse/OAK-2612
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: parent
Affects Versions: 1.1.7
Reporter: Tommaso Teofili
Assignee: Tommaso Teofili
 Fix For: 1.1.8


 Looking at the current CI builds the JDK 8 one is always failing because 
 _maven-findbugs-plugin-2.5.3_ doesn't work with it, on the other hand 
 upgrading to 3.0.0 will make the JDK 6 build failing, therefore the version 
 used has to be dependent on the used JDK.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-1588) Create more tests/validation to LDAP integration

2015-03-12 Thread angela (JIRA)

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

angela updated OAK-1588:

Fix Version/s: (was: 1.2)

 Create more tests/validation to LDAP integration
 

 Key: OAK-1588
 URL: https://issues.apache.org/jira/browse/OAK-1588
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core
Reporter: angela
Assignee: Tobias Bocanegra
  Labels: test

 this is a follow up issue for the remaining tasks as mentioned by [~tripod] 
 in OAK-516:
 {quote}
 [...] needs more testing, validation [...]
 {quote}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-2403) Improve monitoring capabilities for TarMk revision gc

2015-03-12 Thread JIRA

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

Michael Dürig updated OAK-2403:
---
Fix Version/s: (was: 1.0.13)

 Improve monitoring capabilities for TarMk revision gc
 -

 Key: OAK-2403
 URL: https://issues.apache.org/jira/browse/OAK-2403
 Project: Jackrabbit Oak
  Issue Type: Task
  Components: segmentmk
Reporter: Michael Dürig
Assignee: Michael Dürig
  Labels: gc, monitoring
 Fix For: 1.2


 Container devoted to improving monitoring of the TarMk revision garbage 
 collection process. The overall goal is to make it more transparent what 
 revision gc does, how it performs, why it failed etc. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-2408) Investigate ways to make revision gc more precise

2015-03-12 Thread Michael Marth (JIRA)

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

Michael Marth updated OAK-2408:
---
Fix Version/s: (was: 1.0.13)

 Investigate ways to make revision gc more precise 
 --

 Key: OAK-2408
 URL: https://issues.apache.org/jira/browse/OAK-2408
 Project: Jackrabbit Oak
  Issue Type: Task
  Components: segmentmk
Reporter: Michael Dürig
Assignee: Michael Dürig
  Labels: gc
 Fix For: 1.2


 Current approaches to revision garbage collection tend to be too conservative 
 (too little space reclaimed, e.g. OAK-2045) or too aggressive (removing 
 segments still being used, e.g. OAK-2384). 
 This issue is to explore ways to make revision gc on TarMk more precise. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-2596) more (jmx) instrumentation for observation queue

2015-03-12 Thread JIRA

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

Michael Dürig updated OAK-2596:
---
Labels: monitoring observation  (was: )

 more (jmx) instrumentation for observation queue
 

 Key: OAK-2596
 URL: https://issues.apache.org/jira/browse/OAK-2596
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Affects Versions: 1.0.12
Reporter: Stefan Egli
Assignee: Michael Dürig
  Labels: monitoring, observation
 Fix For: 1.0.13


 While debugging issues with the observation queue it would be handy to have 
 more detailed information available. At the moment you can only see one value 
 wrt length of the queue: that is the maximum of all queues. It is unclear if 
 the queue is that long for only one or many listeners. And it is unclear from 
 that if the listener is slow or the engine that produces the events for the 
 listener.
 So I'd suggest to add the following details - possible exposed via JMX? :
 * add queue length details to each of the observation listeners
 * have a history of the last, eg 1000 events per listener showing a) how long 
 the event took to be created/generated and b) how long the listener took to 
 process. Sometimes averages are not detailed enough so such a in-depth 
 information might become useful. (Not sure about the feasibility of '1000' 
 here - maybe that could be configurable though - just putting the idea out 
 here).
 ** have some information about whether a listener is currently 'reading 
 events from the cache' or whether it has to go to eg mongo 
 * maybe have a 'top 10' listeners that have the largest queue at the moment 
 to easily allow navigation instead of having to go through all (eg 200) 
 listeners manually each time.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-1410) Allow automatic propagation of oak-whiteboard when adding security manager

2015-03-12 Thread angela (JIRA)

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

angela commented on OAK-1410:
-

[~tripod], are you still planning to work on this or can this be resolved?

 Allow automatic propagation of oak-whiteboard when adding security manager
 --

 Key: OAK-1410
 URL: https://issues.apache.org/jira/browse/OAK-1410
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core
Reporter: Tobias Bocanegra
Assignee: Tobias Bocanegra
 Fix For: 1.2






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-2413) Clarify Editor.childNodeChanged()

2015-03-12 Thread angela (JIRA)

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

angela commented on OAK-2413:
-

[~mduerig], you are right... it actually assumes that there are changes. is 
there an easy way to identify if there are changes? and how would the test look 
like that illustrates the issue (such that i could verify that a potential fix 
actually addresses the problem)?

 Clarify Editor.childNodeChanged()
 -

 Key: OAK-2413
 URL: https://issues.apache.org/jira/browse/OAK-2413
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Reporter: Marcel Reutegger
Assignee: Michael Dürig
Priority: Minor
 Fix For: 1.2


 The current contract for {{Editor.childNodeChanged()}} does not specify if 
 this method may also be called when the child node did not actually change. 
 The method {{NodeStateDiff.childNodeChanged()}} explicitly states that there 
 may be such calls. Looking at the implementation connecting the two classes, 
 {{EditorDiff.childNodeChange()}} simply calls the editor without checking 
 whether the child node did in fact change.
 I think we either have to change the {{EditorDiff}} or update the contract 
 for the Editor and adjust implementations. E.g. right now, PrivilegeValidator 
 (implements Editor), assumes a call to {{childNodeChange()}} indeed means the 
 child node changed.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-1458) Out-of-process text extraction for better protection agains JVM/memory/CPU problems

2015-03-12 Thread Michael Marth (JIRA)

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

Michael Marth updated OAK-1458:
---
Fix Version/s: (was: 1.2)
   1.3.0

 Out-of-process text extraction for better protection agains JVM/memory/CPU 
 problems
 ---

 Key: OAK-1458
 URL: https://issues.apache.org/jira/browse/OAK-1458
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: oak-lucene, query
Reporter: Michael Marth
  Labels: production, resilience
 Fix For: 1.3.0


 This is a tracking / collection bug for solving problems with text extraction 
 of
 documents (very large, broken, malicious, etc), causing JVM crashes, memory
 problems, excessive CPU usage.
 The basic TIKA feature to enable this fix is TIKA-416 [1]
 [1] https://issues.apache.org/jira/browse/TIKA-416



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-2587) observation processing too eager/unfair under load

2015-03-12 Thread JIRA

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

Michael Dürig resolved OAK-2587.

Resolution: Fixed

Fixed at http://svn.apache.org/r1665604

Let's create a separate issue for merging into 1.0 when necessary. 

 observation processing too eager/unfair under load
 --

 Key: OAK-2587
 URL: https://issues.apache.org/jira/browse/OAK-2587
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Affects Versions: 1.0.12
Reporter: Stefan Egli
Assignee: Michael Dürig
Priority: Critical
  Labels: observation
 Fix For: 1.1.8

 Attachments: OAK-2587.patch


 The current implementation of oak's observation event processing is too eager 
 and thus unfair under load scenarios. 
 Consider having many (eg 200) Eventlisteners but only a relatively small 
 threadpool (eg 5 as is the default in sling) backing them. When processing 
 changes for a particular BackgroundObserver, that one (in 
 BackgroundObserver.completionHandler.call) currently processes *all changes 
 irrespective of how many there are* - ie it is *eager*. Only once that 
 BackgroundObserver processed all changes will it let go and 'pass the thread' 
 to the next BackgroundObserver. Now if for some reason changes (ie commits) 
 are coming in while a BackgroundObserver is busy processing an earlier 
 change, this will lengthen that while loop. As a result the remaining (eg 
 195) *EventListeners will have to wait for a potentially long time* until 
 it's their turn - thus *unfair*.
 Now combine the above pattern with a scenario where mongo is used as the 
 underlying store. In that case in order to remain highly performant it is 
 important that the diffs (for compareAgainstBaseState) are served from the 
 MongoDiffCache for as many cases as possible to avoid doing a round-trip to 
 mongoD. The unfairness in the BackgroundObservers can now result in a large 
 delay between the 'first' observers getting the event and the 'last' one (of 
 those 200). When this delay increases due to a burst in the load, there is a 
 risk of the diffs to no longer be in the cache - those last observers are 
 basically kicked out of the (diff) cache. Once this happens, *the situation 
 gets even worse*, since now you have yet new commits coming in and old 
 changes still having to be processed - all of which are being processed 
 through in 'stripes of 5 listeners' before the next one gets a chance. This 
 at some point results in a totally inefficient cache behavior, or in other 
 words, at some point all diffs have to be read from mongoD.
 To avoid this there are probably a number of options - a few one that come to 
 mind:
 * increase thread-pool to match or be closer to the number of listeners (but 
 this has other disadvantages, eg cost of thread-switching)
 * make BackgroundObservers fairer by limiting the number of changes they 
 process before they give others a chance to be served by the pool.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-1962) Fix and Improve Locking

2015-03-12 Thread Michael Marth (JIRA)

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

Michael Marth updated OAK-1962:
---
Fix Version/s: (was: 1.1.8)
   1.4

 Fix and Improve Locking
 ---

 Key: OAK-1962
 URL: https://issues.apache.org/jira/browse/OAK-1962
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, jcr
Affects Versions: 1.0
Reporter: angela
 Fix For: 1.4


 as discussed during our biweekly planning session, we are having the 
 following locking related use case in our product:
 a page (which is an aggregation of nodes and properties) must be freezed 
 (prevented from being edited/modified/deleted) during the period of a 
 dedicated review (which in our case is triggered by a workflow) before the 
 page then is either published or reopened for further changes.
 for this feature locking would be a perfect match but with the current 
 implementation in oak  it's not possible to remove the lock token from a 
 given session and make sure it's no longer recognizes as lock owner; in 
 particular with the simple-locking feature which we introduced in order to 
 cope with the situation that in our product sessions are living just for the 
 time of a single request.
 is was therefore thinking about ways to address this, keeping the 
 simple-locking requirement in mind while at the same time improving 
 compliance with the JCR specification. my suggestion as follows:
 - use a dedicated hidden and write protected location the repository to store 
 the lock information independent of the protected properties defined by 
 mix:lockable which are just for information purpose (that would be the 
 replacement for the lock-related file we had in jackrabbit 2.x)
 - format: simple lookup consisting of userId + associated lock tokens
 - in case of simple locking LockManager#getLockTokens would make use of that 
 map even if the lock tokens have NOT been explicitly added to the Session 
 either upon LockManager#lock or LockManager#addLockToken
 - in the default (non-simple case) LockManager#getLockTokens would work as 
 specified and the lookup would only be used for maintaining and enforcing the 
 lock related information)
 - LockManager#removeLockToken removes the token from the lookup thus 
 effectively revoking the lock ownership from the given Session and thus 
 preventing it from performing further editing... even in the simple-locking 
 case
 - LockManager#addLockToken results in a modification of the lookup table as 
 well depending on the API contract (i.e. verifying if the lock token would be 
 shared... i don't remember exactly if that's accepted by the specification)
 - LockManager#isLockOwner no longer needs to perform a cheap hack comparing 
 the jcr:lockOwner property with the sessions userId but could really enforce 
 ownership based on the internal lock information stored in the repository in 
 which case getLockTokens would really reflect the ownership for open-scoped 
 locks; furthermore the 'jcr:lockOwner' information could be to what is 
 specified by the API consumer upon LockManager#lock as it is no longer used 
 for enforcing the locks.
 in addition:
 - we could generated  proper lock tokens instead of just using the node id
 and again keep those in a hidden (or otherwise protected) location in the 
 system.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-2602) [Solr] Cost calculation takes time with solr pings even when not fulfilling query

2015-03-12 Thread Tommaso Teofili (JIRA)

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

Tommaso Teofili updated OAK-2602:
-
Fix Version/s: 1.0.13
   1.1.8

 [Solr] Cost calculation takes time with solr pings even when not fulfilling 
 query
 -

 Key: OAK-2602
 URL: https://issues.apache.org/jira/browse/OAK-2602
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: oak-solr
Affects Versions: 1.0.12, 1.1.7
Reporter: Amit Jain
Assignee: Tommaso Teofili
 Fix For: 1.1.8, 1.0.13


 Cost calculation for queries which are fired quite often [1] and which are 
 not going to fulfilled by solr take time due to which the overall cost of the 
 operation is high. 
 [1]
 SELECT * FROM [nt:base] WHERE PROPERTY([rep:members], 'WeakReference') = 
 $uuid 
 SELECT * FROM [nt:base] WHERE [jcr:uuid] = $id



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


  1   2   >