[jira] [Resolved] (OAK-1034) OOME running Oak benchmark suite

2013-10-01 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger resolved OAK-1034.
---

   Resolution: Fixed
Fix Version/s: 0.10

In http://svn.apache.org/r1527935 I changed the afterSuite() method of 
ReadManyTest (aka LinearReadEmpty) to remove the nodes in batches. This is a 
workaround for OAK-1056.

Now the test runs successfully with Oak-Mongo:

{noformat}
# LinearReadEmptymin 10% 50% 90% max   N
Oak-Mongo  0   2 108 726 838 325
{noformat}


 OOME running Oak benchmark suite
 

 Key: OAK-1034
 URL: https://issues.apache.org/jira/browse/OAK-1034
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: mongomk, run
Reporter: Michael Dürig
Assignee: Marcel Reutegger
 Fix For: 0.10


 Several of the benchmarks result in an OOME running with {{-Xmx512M}}



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Assigned] (OAK-1057) Configurable DocumentStore logging wrapper

2013-10-01 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger reassigned OAK-1057:
-

Assignee: Marcel Reutegger

 Configurable DocumentStore logging wrapper 
 ---

 Key: OAK-1057
 URL: https://issues.apache.org/jira/browse/OAK-1057
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, mongomk
Reporter: Marcel Reutegger
Assignee: Marcel Reutegger
Priority: Minor

 Currently the MongoMK Builder only allows to configure the timing wrapper. It 
 would be nice to also configure the use of the DocumentStore logging wrapper.



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Created] (OAK-1057) Configurable DocumentStore logging wrapper

2013-10-01 Thread Marcel Reutegger (JIRA)
Marcel Reutegger created OAK-1057:
-

 Summary: Configurable DocumentStore logging wrapper 
 Key: OAK-1057
 URL: https://issues.apache.org/jira/browse/OAK-1057
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, mongomk
Reporter: Marcel Reutegger
Priority: Minor


Currently the MongoMK Builder only allows to configure the timing wrapper. It 
would be nice to also configure the use of the DocumentStore logging wrapper.



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Resolved] (OAK-1057) Configurable DocumentStore logging wrapper

2013-10-01 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger resolved OAK-1057.
---

   Resolution: Fixed
Fix Version/s: 0.10

Implemented in http://svn.apache.org/r1527959

 Configurable DocumentStore logging wrapper 
 ---

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


 Currently the MongoMK Builder only allows to configure the timing wrapper. It 
 would be nice to also configure the use of the DocumentStore logging wrapper.



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Created] (OAK-1058) Review TreeTypeProvider

2013-10-01 Thread angela (JIRA)
angela created OAK-1058:
---

 Summary: Review TreeTypeProvider
 Key: OAK-1058
 URL: https://issues.apache.org/jira/browse/OAK-1058
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Reporter: angela
Priority: Minor


reminder to review and possibly refactor the tree type provider. this part of 
the core-package is still marked with TODOs and we should clean it up before 
releasing oak.



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Commented] (OAK-1044) Reduce traffic between MongoMK and MongoDB

2013-10-01 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger commented on OAK-1044:
---

Introduced {{DocumentStore.update(CollectionT collection, ListString ids, 
UpdateOp updateOp)}} in http://svn.apache.org/r1528065. This allows to update 
multiple documents with a single call to MongoDB. The method is used in 
MongoMK.backgroundWrite() when {{_lastRev}} and {{_modified}} are written back.

 Reduce traffic between MongoMK and MongoDB
 --

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

 There is quite some redundant traffic going on between MongoMK and MongoDB, 
 which can have a major impact on performance. One of the problems we already 
 saw in the past when there are many changes on a node. The document in 
 MongoDB grows and with every modification to the node the cost increases 
 because MongoMK always requests the complete old document from MongoDB in the 
 response. This is done for several reasons:
 1) MongoMK looks at the returned old document and checks if the updates 
 applied do not conflict.
 2) MongoMK updates its cache with the old document and the updates it applied.
 Splitting the documents when they reach a certain size keeps the cost for an 
 update within bounds, but most of the time the response just contains 
 redundant information already present in MongoMK. E.g. when no other MongoMK 
 instance modified the node, the returned document is the same as the one 
 potentially already in the cache.



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Created] (OAK-1059) Property index: faster unique indexes using new storage strategy

2013-10-01 Thread Thomas Mueller (JIRA)
Thomas Mueller created OAK-1059:
---

 Summary: Property index: faster unique indexes using new storage 
strategy
 Key: OAK-1059
 URL: https://issues.apache.org/jira/browse/OAK-1059
 Project: Jackrabbit Oak
  Issue Type: Improvement
Reporter: Thomas Mueller
Assignee: Thomas Mueller


The property index now stores all entries for a key as a tree 
(ContentMirrorStoreStrategy). This is very good for non-unique indexes. 
However, for unique indexes such as the UUID index, this results in lots of 
nodes.

To improve performance for UUID lookup and update, the (only) entry could be 
stored as a property (UniqueEntryStoreStrategy).



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Updated] (OAK-1059) Property index: faster unique indexes using new storage strategy

2013-10-01 Thread Thomas Mueller (JIRA)

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

Thomas Mueller updated OAK-1059:


Component/s: query
 core

 Property index: faster unique indexes using new storage strategy
 

 Key: OAK-1059
 URL: https://issues.apache.org/jira/browse/OAK-1059
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, query
Reporter: Thomas Mueller
Assignee: Thomas Mueller

 The property index now stores all entries for a key as a tree 
 (ContentMirrorStoreStrategy). This is very good for non-unique indexes. 
 However, for unique indexes such as the UUID index, this results in lots of 
 nodes.
 To improve performance for UUID lookup and update, the (only) entry could be 
 stored as a property (UniqueEntryStoreStrategy).



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Commented] (OAK-1055) Occasional test failure in ObservationTest.observation()

2013-10-01 Thread JIRA

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

Michael Dürig commented on OAK-1055:


Turns out there is a race condition between reporting internal events 
({{ChangeDispatche.contentChanged()}}) and polling for external events 
({{ChangeDispatcher.externalChange()}}): the new root reported by the latter 
may be older than a new root set previously through the former. This is due to 
the changes being persisted outside the lock of 
{{ChangeDispatche.contentChanged()}} and thus being visible inside 
{{ChangeDispatcher.externalChange()}}.

For the time being I think there is no harm in removing the polling for 
external events. I will open a follow up issue to track this in case we need 
it. 

 Occasional test failure in ObservationTest.observation()
 

 Key: OAK-1055
 URL: https://issues.apache.org/jira/browse/OAK-1055
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core
Reporter: Michael Dürig

 The test occasionally fails with
 {code}
 Failed tests:
 observation[1](org.apache.jackrabbit.oak.jcr.observation.ObservationTest):
 Unexpected events: [EventImpl{type=8, jcrPath='/test_node/property',
 userID='oak:unknown', identifier='/test_node', info={}, date=0,
 userData=null, external=true}, EventImpl{type=16,
 jcrPath='/test_node/n1/p1', userID='oak:unknown',
 identifier='/test_node/n1', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/n1/p2',
 userID='oak:unknown', identifier='/test_node/n1', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/n3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/n3/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n3', info={}, date=0, userData=null,
 external=true}, EventImpl{type=8, jcrPath='/test_node/n3/p3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/{4}',
 userID='oak:unknown', identifier='/test_node/{4}', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/{4}/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/{4}', info={}, date=0, userData=null,
 external=true}, EventImpl{type=1, jcrPath='/test_node/n2',
 userID='oak:unknown', identifier='/test_node/n2', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/n2/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n2', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/property',
 userID='oak:unknown', identifier='/test_node', info={}, date=0,
 userData=null, external=true}, EventImpl{type=16,
 jcrPath='/test_node/n1/p1', userID='oak:unknown',
 identifier='/test_node/n1', info={}, date=0, userData=null,
 external=true}, EventImpl{type=8, jcrPath='/test_node/n1/p2',
 userID='oak:unknown', identifier='/test_node/n1', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/n2',
 userID='oak:unknown', identifier='/test_node/n2', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/n2/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n2', info={}, date=0, userData=null,
 external=true}, EventImpl{type=1, jcrPath='/test_node/n3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/n3/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n3', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/n3/p3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=1, jcrPath='/test_node/{4}',
 userID='oak:unknown', identifier='/test_node/{4}', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/{4}/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/{4}', info={}, date=0, userData=null,
 external=true}]
 {code}
 As [noted before | http://markmail.org/message/lk3vrrcn5edib73d]  having 
 {{external=true}} and also the event types indicate that the events are being 
 seen in reverse (i.e. reverse diffing of the node states involved). 



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Updated] (OAK-1060) Periodically poll for external events

2013-10-01 Thread JIRA

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

Michael Dürig updated OAK-1060:
---

Summary: Periodically poll for external events  (was: Periodically poll for 
externel events)

 Periodically poll for external events
 -

 Key: OAK-1060
 URL: https://issues.apache.org/jira/browse/OAK-1060
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Reporter: Michael Dürig
Priority: Minor

 Currently external events are only reported along with local changes. That 
 is, when local changes are persisted external changes are detected and 
 reported along with the local changes. This might cause external events to be 
 delayed indefinitely on cluster nodes without writes. 
 We might want to implement a solution that regularly polls for external 
 events. 
 See OAK-1055 for why a previous implementation didn't work. 



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Commented] (OAK-1055) Occasional test failure in ObservationTest.observation()

2013-10-01 Thread JIRA

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

Michael Dürig commented on OAK-1055:


See OAK-1060 for the follow up issue. 

 Occasional test failure in ObservationTest.observation()
 

 Key: OAK-1055
 URL: https://issues.apache.org/jira/browse/OAK-1055
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core
Reporter: Michael Dürig

 The test occasionally fails with
 {code}
 Failed tests:
 observation[1](org.apache.jackrabbit.oak.jcr.observation.ObservationTest):
 Unexpected events: [EventImpl{type=8, jcrPath='/test_node/property',
 userID='oak:unknown', identifier='/test_node', info={}, date=0,
 userData=null, external=true}, EventImpl{type=16,
 jcrPath='/test_node/n1/p1', userID='oak:unknown',
 identifier='/test_node/n1', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/n1/p2',
 userID='oak:unknown', identifier='/test_node/n1', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/n3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/n3/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n3', info={}, date=0, userData=null,
 external=true}, EventImpl{type=8, jcrPath='/test_node/n3/p3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/{4}',
 userID='oak:unknown', identifier='/test_node/{4}', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/{4}/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/{4}', info={}, date=0, userData=null,
 external=true}, EventImpl{type=1, jcrPath='/test_node/n2',
 userID='oak:unknown', identifier='/test_node/n2', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/n2/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n2', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/property',
 userID='oak:unknown', identifier='/test_node', info={}, date=0,
 userData=null, external=true}, EventImpl{type=16,
 jcrPath='/test_node/n1/p1', userID='oak:unknown',
 identifier='/test_node/n1', info={}, date=0, userData=null,
 external=true}, EventImpl{type=8, jcrPath='/test_node/n1/p2',
 userID='oak:unknown', identifier='/test_node/n1', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/n2',
 userID='oak:unknown', identifier='/test_node/n2', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/n2/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n2', info={}, date=0, userData=null,
 external=true}, EventImpl{type=1, jcrPath='/test_node/n3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/n3/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n3', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/n3/p3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=1, jcrPath='/test_node/{4}',
 userID='oak:unknown', identifier='/test_node/{4}', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/{4}/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/{4}', info={}, date=0, userData=null,
 external=true}]
 {code}
 As [noted before | http://markmail.org/message/lk3vrrcn5edib73d]  having 
 {{external=true}} and also the event types indicate that the events are being 
 seen in reverse (i.e. reverse diffing of the node states involved). 



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Resolved] (OAK-1055) Occasional test failure in ObservationTest.observation()

2013-10-01 Thread JIRA

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

Michael Dürig resolved OAK-1055.


   Resolution: Fixed
Fix Version/s: 0.10
 Assignee: Michael Dürig

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

 Occasional test failure in ObservationTest.observation()
 

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


 The test occasionally fails with
 {code}
 Failed tests:
 observation[1](org.apache.jackrabbit.oak.jcr.observation.ObservationTest):
 Unexpected events: [EventImpl{type=8, jcrPath='/test_node/property',
 userID='oak:unknown', identifier='/test_node', info={}, date=0,
 userData=null, external=true}, EventImpl{type=16,
 jcrPath='/test_node/n1/p1', userID='oak:unknown',
 identifier='/test_node/n1', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/n1/p2',
 userID='oak:unknown', identifier='/test_node/n1', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/n3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/n3/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n3', info={}, date=0, userData=null,
 external=true}, EventImpl{type=8, jcrPath='/test_node/n3/p3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/{4}',
 userID='oak:unknown', identifier='/test_node/{4}', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/{4}/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/{4}', info={}, date=0, userData=null,
 external=true}, EventImpl{type=1, jcrPath='/test_node/n2',
 userID='oak:unknown', identifier='/test_node/n2', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/n2/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n2', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/property',
 userID='oak:unknown', identifier='/test_node', info={}, date=0,
 userData=null, external=true}, EventImpl{type=16,
 jcrPath='/test_node/n1/p1', userID='oak:unknown',
 identifier='/test_node/n1', info={}, date=0, userData=null,
 external=true}, EventImpl{type=8, jcrPath='/test_node/n1/p2',
 userID='oak:unknown', identifier='/test_node/n1', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/n2',
 userID='oak:unknown', identifier='/test_node/n2', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/n2/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n2', info={}, date=0, userData=null,
 external=true}, EventImpl{type=1, jcrPath='/test_node/n3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/n3/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n3', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/n3/p3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=1, jcrPath='/test_node/{4}',
 userID='oak:unknown', identifier='/test_node/{4}', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/{4}/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/{4}', info={}, date=0, userData=null,
 external=true}]
 {code}
 As [noted before | http://markmail.org/message/lk3vrrcn5edib73d]  having 
 {{external=true}} and also the event types indicate that the events are being 
 seen in reverse (i.e. reverse diffing of the node states involved). 



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Reopened] (OAK-1055) Occasional test failure in ObservationTest.observation()

2013-10-01 Thread JIRA

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

Michael Dürig reopened OAK-1055:



Reopening since this is only half way fixed yet. The same race actually exists 
between concurrent invocations of {{PostCommitHook.contentChanged()}}. 

 Occasional test failure in ObservationTest.observation()
 

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


 The test occasionally fails with
 {code}
 Failed tests:
 observation[1](org.apache.jackrabbit.oak.jcr.observation.ObservationTest):
 Unexpected events: [EventImpl{type=8, jcrPath='/test_node/property',
 userID='oak:unknown', identifier='/test_node', info={}, date=0,
 userData=null, external=true}, EventImpl{type=16,
 jcrPath='/test_node/n1/p1', userID='oak:unknown',
 identifier='/test_node/n1', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/n1/p2',
 userID='oak:unknown', identifier='/test_node/n1', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/n3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/n3/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n3', info={}, date=0, userData=null,
 external=true}, EventImpl{type=8, jcrPath='/test_node/n3/p3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/{4}',
 userID='oak:unknown', identifier='/test_node/{4}', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/{4}/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/{4}', info={}, date=0, userData=null,
 external=true}, EventImpl{type=1, jcrPath='/test_node/n2',
 userID='oak:unknown', identifier='/test_node/n2', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/n2/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n2', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/property',
 userID='oak:unknown', identifier='/test_node', info={}, date=0,
 userData=null, external=true}, EventImpl{type=16,
 jcrPath='/test_node/n1/p1', userID='oak:unknown',
 identifier='/test_node/n1', info={}, date=0, userData=null,
 external=true}, EventImpl{type=8, jcrPath='/test_node/n1/p2',
 userID='oak:unknown', identifier='/test_node/n1', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/n2',
 userID='oak:unknown', identifier='/test_node/n2', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/n2/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n2', info={}, date=0, userData=null,
 external=true}, EventImpl{type=1, jcrPath='/test_node/n3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/n3/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n3', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/n3/p3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=1, jcrPath='/test_node/{4}',
 userID='oak:unknown', identifier='/test_node/{4}', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/{4}/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/{4}', info={}, date=0, userData=null,
 external=true}]
 {code}
 As [noted before | http://markmail.org/message/lk3vrrcn5edib73d]  having 
 {{external=true}} and also the event types indicate that the events are being 
 seen in reverse (i.e. reverse diffing of the node states involved). 



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Commented] (OAK-1055) Occasional test failure in ObservationTest.observation()

2013-10-01 Thread JIRA

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

Michael Dürig commented on OAK-1055:


In a quick chat with Jukka, we discussed moving the {{PostCommitHook}} from 
being passed as an argument to being owned by the {{NodeStore}}. This makes it 
much easier to specify a contract that requires a linear sequence of node 
states to be passed to that hook. 

 Occasional test failure in ObservationTest.observation()
 

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


 The test occasionally fails with
 {code}
 Failed tests:
 observation[1](org.apache.jackrabbit.oak.jcr.observation.ObservationTest):
 Unexpected events: [EventImpl{type=8, jcrPath='/test_node/property',
 userID='oak:unknown', identifier='/test_node', info={}, date=0,
 userData=null, external=true}, EventImpl{type=16,
 jcrPath='/test_node/n1/p1', userID='oak:unknown',
 identifier='/test_node/n1', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/n1/p2',
 userID='oak:unknown', identifier='/test_node/n1', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/n3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/n3/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n3', info={}, date=0, userData=null,
 external=true}, EventImpl{type=8, jcrPath='/test_node/n3/p3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/{4}',
 userID='oak:unknown', identifier='/test_node/{4}', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/{4}/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/{4}', info={}, date=0, userData=null,
 external=true}, EventImpl{type=1, jcrPath='/test_node/n2',
 userID='oak:unknown', identifier='/test_node/n2', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/n2/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n2', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/property',
 userID='oak:unknown', identifier='/test_node', info={}, date=0,
 userData=null, external=true}, EventImpl{type=16,
 jcrPath='/test_node/n1/p1', userID='oak:unknown',
 identifier='/test_node/n1', info={}, date=0, userData=null,
 external=true}, EventImpl{type=8, jcrPath='/test_node/n1/p2',
 userID='oak:unknown', identifier='/test_node/n1', info={}, date=0,
 userData=null, external=true}, EventImpl{type=2, jcrPath='/test_node/n2',
 userID='oak:unknown', identifier='/test_node/n2', info={}, date=0,
 userData=null, external=true}, EventImpl{type=8,
 jcrPath='/test_node/n2/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n2', info={}, date=0, userData=null,
 external=true}, EventImpl{type=1, jcrPath='/test_node/n3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/n3/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/n3', info={}, date=0, userData=null,
 external=true}, EventImpl{type=4, jcrPath='/test_node/n3/p3',
 userID='oak:unknown', identifier='/test_node/n3', info={}, date=0,
 userData=null, external=true}, EventImpl{type=1, jcrPath='/test_node/{4}',
 userID='oak:unknown', identifier='/test_node/{4}', info={}, date=0,
 userData=null, external=true}, EventImpl{type=4,
 jcrPath='/test_node/{4}/jcr:primaryType', userID='oak:unknown',
 identifier='/test_node/{4}', info={}, date=0, userData=null,
 external=true}]
 {code}
 As [noted before | http://markmail.org/message/lk3vrrcn5edib73d]  having 
 {{external=true}} and also the event types indicate that the events are being 
 seen in reverse (i.e. reverse diffing of the node states involved). 



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Commented] (OAK-1060) Periodically poll for external events

2013-10-01 Thread JIRA

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

Michael Dürig commented on OAK-1060:


In [the same chat | 
https://issues.apache.org/jira/browse/OAK-1055?focusedCommentId=13783287page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13783287]
 we also discussed that splitting the single 
{{PostCommitHook.contentChanged()}} method up into three separate methods as 
proposed in OAK-775 helps with polling for external events without the 
problematic race.

 Periodically poll for external events
 -

 Key: OAK-1060
 URL: https://issues.apache.org/jira/browse/OAK-1060
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Reporter: Michael Dürig
Priority: Minor

 Currently external events are only reported along with local changes. That 
 is, when local changes are persisted external changes are detected and 
 reported along with the local changes. This might cause external events to be 
 delayed indefinitely on cluster nodes without writes. 
 We might want to implement a solution that regularly polls for external 
 events. 
 See OAK-1055 for why a previous implementation didn't work. 



--
This message was sent by Atlassian JIRA
(v6.1#6144)