[jira] [Commented] (OAK-7262) LockBasedScheduler#getHeadNodeState poor performance due to lock contention in commitTimeHistogram implementation

2018-02-14 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-7262?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16364389#comment-16364389
 ] 

Valentin Olteanu commented on OAK-7262:
---

FWIU the patch is not related to compaction, that's why I was thinking of 
having a dedicated stress test in the benchmark that reproduces this particular 
case...

> LockBasedScheduler#getHeadNodeState poor performance due to lock contention 
> in commitTimeHistogram implementation
> -
>
> Key: OAK-7262
> URL: https://issues.apache.org/jira/browse/OAK-7262
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: segment-tar
>Reporter: Andrei Dulceanu
>Assignee: Andrei Dulceanu
>Priority: Major
> Fix For: 1.9.0, 1.10
>
>
> With OAK-4732, we slightly prioritised reads, allowing callers of 
> {{LockBasedScheduler#getHeadNodeState}} to wait for a certain amount of time 
> on the commit semaphore, in order to fetch the latest head. The amount of 
> time to wait for was computed as the median of the latest 1000 commits, but 
> the implementation was flexible enough to replace the 0.5 quantile with a 
> different value.
> The initial implementation used {{SynchronizedDescriptiveStatistics}} from 
> {{commons-math3}}. In OAK-6430, we replaced that with a {{Histogram}} backed 
> by a {{SlindingWindowReservoir}} from the dropwizard metric library 
> ({{io.dropwizard.metrics}}). 
> One of the problems observed with the current implementation is that, under 
> heavy loading, the performance of {{LockBasedScheduler#getHeadNodeState}} 
> decreases due to lock contention in {{commitTimeHistogram}} implementation. 
> Namely,  {{SlidingWindowReservoir#getSnapshot}} seems to be a bottleneck. It 
> copies an array of 1000 elements at each invocation of 
> {{LockBasedScheduler#getHeadNodeState}}, acquiring and releasing a lock for 
> each element in the array.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (OAK-7262) LockBasedScheduler#getHeadNodeState poor performance due to lock contention in commitTimeHistogram implementation

2018-02-14 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-7262?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16363844#comment-16363844
 ] 

Valentin Olteanu commented on OAK-7262:
---

[~dulceanu], is there a stress test you could image that shows the contention 
before the patch? 

> LockBasedScheduler#getHeadNodeState poor performance due to lock contention 
> in commitTimeHistogram implementation
> -
>
> Key: OAK-7262
> URL: https://issues.apache.org/jira/browse/OAK-7262
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: segment-tar
>Reporter: Andrei Dulceanu
>Assignee: Andrei Dulceanu
>Priority: Major
> Fix For: 1.9.0, 1.10
>
>
> With OAK-4732, we slightly prioritised reads, allowing callers of 
> {{LockBasedScheduler#getHeadNodeState}} to wait for a certain amount of time 
> on the commit semaphore, in order to fetch the latest head. The amount of 
> time to wait for was computed as the median of the latest 1000 commits, but 
> the implementation was flexible enough to replace the 0.5 quantile with a 
> different value.
> The initial implementation used {{SynchronizedDescriptiveStatistics}} from 
> {{commons-math3}}. In OAK-6430, we replaced that with a {{Histogram}} backed 
> by a {{SlindingWindowReservoir}} from the dropwizard metric library 
> ({{io.dropwizard.metrics}}). 
> One of the problems observed with the current implementation is that, under 
> heavy loading, the performance of {{LockBasedScheduler#getHeadNodeState}} 
> decreases due to lock contention in {{commitTimeHistogram}} implementation. 
> Namely,  {{SlidingWindowReservoir#getSnapshot}} seems to be a bottleneck. It 
> copies an array of 1000 elements at each invocation of 
> {{LockBasedScheduler#getHeadNodeState}}, acquiring and releasing a lock for 
> each element in the array.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (OAK-7224) oak-run check should have an option to check the segments checksums

2018-01-31 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-7224?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16346566#comment-16346566
 ] 

Valentin Olteanu commented on OAK-7224:
---

If this is a completely different type of check, e.g. only checksum of 
segments, I would create another command: {{check-segments}}. But if it's doing 
both the classical check and the segments checksum, then it's ok to have a 
parameter...

> oak-run check should have an option to check the segments checksums
> ---
>
> Key: OAK-7224
> URL: https://issues.apache.org/jira/browse/OAK-7224
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: run, segment-tar
>Reporter: Andrei Dulceanu
>Assignee: Andrei Dulceanu
>Priority: Minor
>  Labels: tooling
> Fix For: 1.9.0, 1.10
>
>
> {{oak-run check}} does currently *not* check the checksums of the segments. 
> As a consequence, there is no quick way of determining the state of the 
> repository (corrupt/valid), after corrupting some random node record, as we 
> currently do in {{CheckRepositoryTestBase#corruptRecord}}. To determine that, 
> there needs to be an attempt to read the corrupt record as part of a 
> traversal.
> An easier way would be to have a new dedicated option for this (i.e., 
> {{--segments}}) which checks by default the content of segments against the 
> checksums from all the tar files in the specified location. Additionally, it 
> could accept as an argument a list of tar files, the segments of which to be 
> checked.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (OAK-3855) oak-run compact should check segment version

2017-12-18 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-3855?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16294770#comment-16294770
 ] 

Valentin Olteanu commented on OAK-3855:
---

[~mduerig], is the new parameter already documented somewhere?

> oak-run compact should check segment version
> 
>
> Key: OAK-3855
> URL: https://issues.apache.org/jira/browse/OAK-3855
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: run
>Reporter: Michael Dürig
>Assignee: Michael Dürig
>Priority: Critical
>  Labels: gc, resilience, tooling
> Fix For: 1.3.15, 1.4
>
>
> Off line compaction should exit with a warning if run on a store with non 
> matching segment version. It should provide a {{--force}} option to override 
> this behaviour such that it can still be used for explicit upgrading. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Comment Edited] (OAK-6836) OnRC report

2017-12-14 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-6836?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16290805#comment-16290805
 ] 

Valentin Olteanu edited comment on OAK-6836 at 12/14/17 1:29 PM:
-

I've started a patch in 
https://github.com/volteanu/jackrabbit-oak/tree/OAK-6836 with the [first 
commit|https://github.com/volteanu/jackrabbit-oak/commit/c4e68d4a7c5a8df27738a418589c71cc5199302e]
 that adds the field with just a few info:

!Screen Shot 2017-12-14 at 1.55.40 PM.png|thumbnail!

In the logs it looks like this:
{code}
14.12.2017 13:39:50.518 *INFO* [TarMK revision gc 
[/Users/volteanu/workspace/test/author/crx-quickstart/repository/segmentstore]] 
org.apache.jackrabbit.oak.segment.file.FileStore GCReport{gcCount=1, 
gcType=null, result=null}
{code}

[~mduerig], [~frm], [~dulceanu], WDYT? I would like to know if the start looks 
good before adding all the data.

One thing I'm not sure about is the format of the string. It should be human 
readable, but also parsable/grep-able. Maybe json?



was (Author: volteanu):
I've started a patch in 
https://github.com/volteanu/jackrabbit-oak/tree/OAK-6836 with the [first 
commit|https://github.com/volteanu/jackrabbit-oak/commit/c4e68d4a7c5a8df27738a418589c71cc5199302e]
 that adds the field with just a few info:

!Screen Shot 2017-12-14 at 1.55.40 PM.png|thumbnail!

In the logs it looks like this:
{code}
14.12.2017 13:39:50.518 *INFO* [TarMK revision gc 
[/Users/volteanu/workspace/test/author/crx-quickstart/repository/segmentstore]] 
org.apache.jackrabbit.oak.segment.file.FileStore GCReport{gcCount=1, 
gcType=null, result=null}
{code}

[~mduerig], [~frm], [~dulceanu], WDYT? I would like to know if the start looks 
good before adding all the data.

One thing I'm not sure about is the format of the string. It should be human 
readable, but also parsable/grep-able. Maybe json?


> OnRC report
> ---
>
> Key: OAK-6836
> URL: https://issues.apache.org/jira/browse/OAK-6836
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: segment-tar
>Reporter: Valentin Olteanu
>Priority: Minor
>  Labels: production
> Attachments: Screen Shot 2017-12-14 at 1.55.40 PM.png
>
>
> Currently, the information regarding an online revision cleanup execution is 
> scattered across multiple log lines and partially available in the attributes 
> of {{SegmentRevisionGarbageCollection}} MBean. 
> While useful for debugging, this is hard to grasp for users that need to 
> understand the full process to be able to read it.
> The idea would be to create a "report" with all the details of an execution 
> and output it at the end - write to log, but also store it in the MBean, from 
> where it can be consumed by monitoring and health checks. 
> In the MBean, this would replace the _Last*_ attributes.
> In the logs, this could replace all the intermediary logs (switch them to 
> DEBUG).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6941) Compatibility matrix for oak-run compact

2017-11-14 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-6941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16251212#comment-16251212
 ] 

Valentin Olteanu commented on OAK-6941:
---

Probably the simplest solution is through documentation: a page containing the 
sparse matrix of known compatible versions.

Another format would be a table with the most recent known compatible version. 


> Compatibility matrix for oak-run compact
> 
>
> Key: OAK-6941
> URL: https://issues.apache.org/jira/browse/OAK-6941
> Project: Jackrabbit Oak
>  Issue Type: Documentation
>  Components: run, segment-tar
>Reporter: Valentin Olteanu
>
> h4. Problem statement
> For compacting the segmentstore using {{oak-run}}, the safest option is to 
> use the same version of {{oak-run}} as the Oak version used to generate the 
> repository. Yet, sometimes, a newer {{oak-run}} version is recommended to 
> benefit of bug fixes and improvements, but not every combination of source 
> repo and oak-run is safe to use and the user needs a way to check the 
> compatibility. Thus, the users need a tool that guides the decision of which 
> version to use.
> h4. Requirements
> * Easy to decide what {{oak-run}} version should be used for a certain Oak 
> version
> * Up to date with the latest releases
> * Machine readable for scripting
> * Include details on the benefits of using a certain version (release notes)
> * Blacklist of versions that should not be used (with alternatives)
> h4. Solution
> TBD



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (OAK-6941) Compatibility matrix for oak-run compact

2017-11-14 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu updated OAK-6941:
--
Description: 
h4. Problem statement
For compacting the segmentstore using {{oak-run}}, the safest option is to use 
the same version of {{oak-run}} as the Oak version used to generate the 
repository. Yet, sometimes, a newer {{oak-run}} version is recommended to 
benefit of bug fixes and improvements, but not every combination of source repo 
and oak-run is safe to use and the user needs a way to check the compatibility. 
Thus, the users need a tool that guides the decision of which version to use.

h4. Requirements
* Easy to decide what {{oak-run}} version should be used for a certain Oak 
version
* Up to date with the latest releases
* Machine readable for scripting
* Include details on the benefits of using a certain version (release notes)
* Blacklist of versions that should not be used (with alternatives)

h4. Solution
TBD

> Compatibility matrix for oak-run compact
> 
>
> Key: OAK-6941
> URL: https://issues.apache.org/jira/browse/OAK-6941
> Project: Jackrabbit Oak
>  Issue Type: Documentation
>  Components: run, segment-tar
>Reporter: Valentin Olteanu
>
> h4. Problem statement
> For compacting the segmentstore using {{oak-run}}, the safest option is to 
> use the same version of {{oak-run}} as the Oak version used to generate the 
> repository. Yet, sometimes, a newer {{oak-run}} version is recommended to 
> benefit of bug fixes and improvements, but not every combination of source 
> repo and oak-run is safe to use and the user needs a way to check the 
> compatibility. Thus, the users need a tool that guides the decision of which 
> version to use.
> h4. Requirements
> * Easy to decide what {{oak-run}} version should be used for a certain Oak 
> version
> * Up to date with the latest releases
> * Machine readable for scripting
> * Include details on the benefits of using a certain version (release notes)
> * Blacklist of versions that should not be used (with alternatives)
> h4. Solution
> TBD



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (OAK-6941) Compatibility matrix for oak-run compact

2017-11-14 Thread Valentin Olteanu (JIRA)
Valentin Olteanu created OAK-6941:
-

 Summary: Compatibility matrix for oak-run compact
 Key: OAK-6941
 URL: https://issues.apache.org/jira/browse/OAK-6941
 Project: Jackrabbit Oak
  Issue Type: Documentation
  Components: run, segment-tar
Reporter: Valentin Olteanu






--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6836) OnRC report

2017-10-16 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-6836?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16205973#comment-16205973
 ] 

Valentin Olteanu commented on OAK-6836:
---

[~mduerig], [~frm], [~dulceanu], what do you think about the general idea?

I have some WIP code (independent to segment-tar) that I use to parse the logs 
and output such reports (I needed it to analyze several days of logs). I could 
try to adapt the POC to the segment tar and come up with a patch, but I want to 
know if you think it's worth going this way.

> OnRC report
> ---
>
> Key: OAK-6836
> URL: https://issues.apache.org/jira/browse/OAK-6836
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: segment-tar
>Reporter: Valentin Olteanu
> Fix For: 1.8
>
>
> Currently, the information regarding an online revision cleanup execution is 
> scattered across multiple log lines and partially available in the attributes 
> of {{SegmentRevisionGarbageCollection}} MBean. 
> While useful for debugging, this is hard to grasp for users that need to 
> understand the full process to be able to read it.
> The idea would be to create a "report" with all the details of an execution 
> and output it at the end - write to log, but also store it in the MBean, from 
> where it can be consumed by monitoring and health checks. 
> In the MBean, this would replace the _Last*_ attributes.
> In the logs, this could replace all the intermediary logs (switch them to 
> DEBUG).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (OAK-6836) OnRC report

2017-10-16 Thread Valentin Olteanu (JIRA)
Valentin Olteanu created OAK-6836:
-

 Summary: OnRC report
 Key: OAK-6836
 URL: https://issues.apache.org/jira/browse/OAK-6836
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: segment-tar
Reporter: Valentin Olteanu
 Fix For: 1.8


Currently, the information regarding an online revision cleanup execution is 
scattered across multiple log lines and partially available in the attributes 
of {{SegmentRevisionGarbageCollection}} MBean. 
While useful for debugging, this is hard to grasp for users that need to 
understand the full process to be able to read it.

The idea would be to create a "report" with all the details of an execution and 
output it at the end - write to log, but also store it in the MBean, from where 
it can be consumed by monitoring and health checks. 

In the MBean, this would replace the _Last*_ attributes.
In the logs, this could replace all the intermediary logs (switch them to 
DEBUG).




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (OAK-6784) Exceptions are inhibited in oak-run compact

2017-10-05 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu updated OAK-6784:
--
Affects Version/s: 1.6.5

> Exceptions are inhibited in oak-run compact
> ---
>
> Key: OAK-6784
> URL: https://issues.apache.org/jira/browse/OAK-6784
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: run, segment-tar
>Affects Versions: 1.7.8, 1.6.5
>Reporter: Valentin Olteanu
> Fix For: 1.8
>
>
> Exceptions thrown by {{oak-run compact}} are inhibited so the exit code of 
> the command is not correct in case of error. 
> Example: 
> {code}
> $ java -jar oak-run-1.7.8-R1809845.jar compact test-oak-run/
> Apache Jackrabbit Oak 1.7.8-R1809845
> Compacting test-oak-run-6.3.0
> With default access mode
> before
> Thu Oct 05 15:14:22 CEST 2017, journal.log
> Thu Oct 05 15:14:23 CEST 2017, data0a.tar
> Thu Oct 05 15:14:23 CEST 2017, manifest
> Thu Oct 05 15:14:23 CEST 2017, repo.lock
> size 119.1 MB (119133142 bytes)
> -> compacting
> org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException: 
> Using a too recent version of oak-segment-tar
>   at 
> org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkStoreVersion(ManifestChecker.java:81)
>   at 
> org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkManifest(ManifestChecker.java:70)
>   at 
> org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkAndUpdateManifest(ManifestChecker.java:51)
>   at 
> org.apache.jackrabbit.oak.segment.file.FileStore.(FileStore.java:191)
>   at 
> org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.build(FileStoreBuilder.java:343)
>   at 
> org.apache.jackrabbit.oak.segment.tool.Compact.newFileStore(Compact.java:165)
>   at 
> org.apache.jackrabbit.oak.segment.tool.Compact.compact(Compact.java:135)
>   at org.apache.jackrabbit.oak.segment.tool.Compact.run(Compact.java:128)
>   at 
> org.apache.jackrabbit.oak.run.SegmentTarUtils.compact(SegmentTarUtils.java:183)
>   at 
> org.apache.jackrabbit.oak.run.CompactCommand.execute(CompactCommand.java:93)
>   at org.apache.jackrabbit.oak.run.Main.main(Main.java:49)
> after
> Thu Oct 05 15:14:22 CEST 2017, journal.log
> Thu Oct 05 15:14:23 CEST 2017, data0a.tar
> Thu Oct 05 15:14:23 CEST 2017, manifest
> Thu Oct 05 15:14:23 CEST 2017, repo.lock
> size 119.1 MB (119133142 bytes)
> removed files []
> added files []
> Compaction succeeded in 211.9 ms (0s).
> {code}
> A quick fix would be to wrap the exception into a {{RuntimeException}}:
> {code}
> --- 
> a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
> +++ 
> b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
> @@ -127,7 +127,7 @@ public class Compact implements Runnable {
>  try {
>  compact();
>  } catch (Exception e) {
> -e.printStackTrace();
> +throw new RuntimeException("Failed to run compact", e);
>  }
>  }
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6784) Exceptions are inhibited in oak-run compact

2017-10-05 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-6784?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16192997#comment-16192997
 ] 

Valentin Olteanu commented on OAK-6784:
---

The same happens in {{oak-run-1.6.5}} so it might be worth backporting.

> Exceptions are inhibited in oak-run compact
> ---
>
> Key: OAK-6784
> URL: https://issues.apache.org/jira/browse/OAK-6784
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: run, segment-tar
>Affects Versions: 1.7.8, 1.6.5
>Reporter: Valentin Olteanu
> Fix For: 1.8
>
>
> Exceptions thrown by {{oak-run compact}} are inhibited so the exit code of 
> the command is not correct in case of error. 
> Example: 
> {code}
> $ java -jar oak-run-1.7.8-R1809845.jar compact test-oak-run/
> Apache Jackrabbit Oak 1.7.8-R1809845
> Compacting test-oak-run-6.3.0
> With default access mode
> before
> Thu Oct 05 15:14:22 CEST 2017, journal.log
> Thu Oct 05 15:14:23 CEST 2017, data0a.tar
> Thu Oct 05 15:14:23 CEST 2017, manifest
> Thu Oct 05 15:14:23 CEST 2017, repo.lock
> size 119.1 MB (119133142 bytes)
> -> compacting
> org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException: 
> Using a too recent version of oak-segment-tar
>   at 
> org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkStoreVersion(ManifestChecker.java:81)
>   at 
> org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkManifest(ManifestChecker.java:70)
>   at 
> org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkAndUpdateManifest(ManifestChecker.java:51)
>   at 
> org.apache.jackrabbit.oak.segment.file.FileStore.(FileStore.java:191)
>   at 
> org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.build(FileStoreBuilder.java:343)
>   at 
> org.apache.jackrabbit.oak.segment.tool.Compact.newFileStore(Compact.java:165)
>   at 
> org.apache.jackrabbit.oak.segment.tool.Compact.compact(Compact.java:135)
>   at org.apache.jackrabbit.oak.segment.tool.Compact.run(Compact.java:128)
>   at 
> org.apache.jackrabbit.oak.run.SegmentTarUtils.compact(SegmentTarUtils.java:183)
>   at 
> org.apache.jackrabbit.oak.run.CompactCommand.execute(CompactCommand.java:93)
>   at org.apache.jackrabbit.oak.run.Main.main(Main.java:49)
> after
> Thu Oct 05 15:14:22 CEST 2017, journal.log
> Thu Oct 05 15:14:23 CEST 2017, data0a.tar
> Thu Oct 05 15:14:23 CEST 2017, manifest
> Thu Oct 05 15:14:23 CEST 2017, repo.lock
> size 119.1 MB (119133142 bytes)
> removed files []
> added files []
> Compaction succeeded in 211.9 ms (0s).
> {code}
> A quick fix would be to wrap the exception into a {{RuntimeException}}:
> {code}
> --- 
> a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
> +++ 
> b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
> @@ -127,7 +127,7 @@ public class Compact implements Runnable {
>  try {
>  compact();
>  } catch (Exception e) {
> -e.printStackTrace();
> +throw new RuntimeException("Failed to run compact", e);
>  }
>  }
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6784) Exceptions are inhibited in oak-run compact

2017-10-05 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-6784?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16192935#comment-16192935
 ] 

Valentin Olteanu commented on OAK-6784:
---

Output with the proposed fix:
{code}
$ java -jar oak-run-1.8-SNAPSHOT.jar compact exception-test/
Apache Jackrabbit Oak 1.8-SNAPSHOT
Compacting exception-test
With default access mode
before
Thu Oct 05 15:43:40 CEST 2017, journal.log
Thu Oct 05 15:43:41 CEST 2017, data0a.tar
Thu Oct 05 15:43:41 CEST 2017, manifest
Thu Oct 05 15:43:41 CEST 2017, repo.lock
size 119.1 MB (119133142 bytes)
-> compacting
Compaction failure stack trace:
java.lang.RuntimeException: Failed to run compact
at org.apache.jackrabbit.oak.segment.tool.Compact.run(Compact.java:131)
at 
org.apache.jackrabbit.oak.run.SegmentTarUtils.compact(SegmentTarUtils.java:183)
at 
org.apache.jackrabbit.oak.run.CompactCommand.execute(CompactCommand.java:93)
at org.apache.jackrabbit.oak.run.Main.main(Main.java:49)
Caused by: 
org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException: Using 
a too recent version of oak-segment-tar
at 
org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkStoreVersion(ManifestChecker.java:81)
at 
org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkManifest(ManifestChecker.java:70)
at 
org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkAndUpdateManifest(ManifestChecker.java:51)
at 
org.apache.jackrabbit.oak.segment.file.FileStore.(FileStore.java:191)
at 
org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.build(FileStoreBuilder.java:343)
at 
org.apache.jackrabbit.oak.segment.tool.Compact.newFileStore(Compact.java:166)
at 
org.apache.jackrabbit.oak.segment.tool.Compact.compact(Compact.java:136)
at org.apache.jackrabbit.oak.segment.tool.Compact.run(Compact.java:128)
... 3 more
Compaction failed in 139.8 ms (0s).
{code}

> Exceptions are inhibited in oak-run compact
> ---
>
> Key: OAK-6784
> URL: https://issues.apache.org/jira/browse/OAK-6784
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: run, segment-tar
>Affects Versions: 1.7.8
>Reporter: Valentin Olteanu
> Fix For: 1.8
>
>
> Exceptions thrown by {{oak-run compact}} are inhibited so the exit code of 
> the command is not correct in case of error. 
> Example: 
> {code}
> $ java -jar oak-run-1.7.8-R1809845.jar compact test-oak-run/
> Apache Jackrabbit Oak 1.7.8-R1809845
> Compacting test-oak-run-6.3.0
> With default access mode
> before
> Thu Oct 05 15:14:22 CEST 2017, journal.log
> Thu Oct 05 15:14:23 CEST 2017, data0a.tar
> Thu Oct 05 15:14:23 CEST 2017, manifest
> Thu Oct 05 15:14:23 CEST 2017, repo.lock
> size 119.1 MB (119133142 bytes)
> -> compacting
> org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException: 
> Using a too recent version of oak-segment-tar
>   at 
> org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkStoreVersion(ManifestChecker.java:81)
>   at 
> org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkManifest(ManifestChecker.java:70)
>   at 
> org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkAndUpdateManifest(ManifestChecker.java:51)
>   at 
> org.apache.jackrabbit.oak.segment.file.FileStore.(FileStore.java:191)
>   at 
> org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.build(FileStoreBuilder.java:343)
>   at 
> org.apache.jackrabbit.oak.segment.tool.Compact.newFileStore(Compact.java:165)
>   at 
> org.apache.jackrabbit.oak.segment.tool.Compact.compact(Compact.java:135)
>   at org.apache.jackrabbit.oak.segment.tool.Compact.run(Compact.java:128)
>   at 
> org.apache.jackrabbit.oak.run.SegmentTarUtils.compact(SegmentTarUtils.java:183)
>   at 
> org.apache.jackrabbit.oak.run.CompactCommand.execute(CompactCommand.java:93)
>   at org.apache.jackrabbit.oak.run.Main.main(Main.java:49)
> after
> Thu Oct 05 15:14:22 CEST 2017, journal.log
> Thu Oct 05 15:14:23 CEST 2017, data0a.tar
> Thu Oct 05 15:14:23 CEST 2017, manifest
> Thu Oct 05 15:14:23 CEST 2017, repo.lock
> size 119.1 MB (119133142 bytes)
> removed files []
> added files []
> Compaction succeeded in 211.9 ms (0s).
> {code}
> A quick fix would be to wrap the exception into a {{RuntimeException}}:
> {code}
> --- 
> a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
> +++ 
> b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
> @@ -127,7 +127,7 @@ public class Compact implements Runnable {
>  try {
>  compact();
>  } catch (Exception e) {
> -

[jira] [Commented] (OAK-6784) Exceptions are inhibited in oak-run compact

2017-10-05 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-6784?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16192930#comment-16192930
 ] 

Valentin Olteanu commented on OAK-6784:
---

ping [~mduerig], [~frm], [~dulceanu].

> Exceptions are inhibited in oak-run compact
> ---
>
> Key: OAK-6784
> URL: https://issues.apache.org/jira/browse/OAK-6784
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: run, segment-tar
>Affects Versions: 1.7.8
>Reporter: Valentin Olteanu
> Fix For: 1.8
>
>
> Exceptions thrown by {{oak-run compact}} are inhibited so the exit code of 
> the command is not correct in case of error. 
> Example: 
> {code}
> $ java -jar oak-run-1.7.8-R1809845.jar compact test-oak-run/
> Apache Jackrabbit Oak 1.7.8-R1809845
> Compacting test-oak-run-6.3.0
> With default access mode
> before
> Thu Oct 05 15:14:22 CEST 2017, journal.log
> Thu Oct 05 15:14:23 CEST 2017, data0a.tar
> Thu Oct 05 15:14:23 CEST 2017, manifest
> Thu Oct 05 15:14:23 CEST 2017, repo.lock
> size 119.1 MB (119133142 bytes)
> -> compacting
> org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException: 
> Using a too recent version of oak-segment-tar
>   at 
> org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkStoreVersion(ManifestChecker.java:81)
>   at 
> org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkManifest(ManifestChecker.java:70)
>   at 
> org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkAndUpdateManifest(ManifestChecker.java:51)
>   at 
> org.apache.jackrabbit.oak.segment.file.FileStore.(FileStore.java:191)
>   at 
> org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.build(FileStoreBuilder.java:343)
>   at 
> org.apache.jackrabbit.oak.segment.tool.Compact.newFileStore(Compact.java:165)
>   at 
> org.apache.jackrabbit.oak.segment.tool.Compact.compact(Compact.java:135)
>   at org.apache.jackrabbit.oak.segment.tool.Compact.run(Compact.java:128)
>   at 
> org.apache.jackrabbit.oak.run.SegmentTarUtils.compact(SegmentTarUtils.java:183)
>   at 
> org.apache.jackrabbit.oak.run.CompactCommand.execute(CompactCommand.java:93)
>   at org.apache.jackrabbit.oak.run.Main.main(Main.java:49)
> after
> Thu Oct 05 15:14:22 CEST 2017, journal.log
> Thu Oct 05 15:14:23 CEST 2017, data0a.tar
> Thu Oct 05 15:14:23 CEST 2017, manifest
> Thu Oct 05 15:14:23 CEST 2017, repo.lock
> size 119.1 MB (119133142 bytes)
> removed files []
> added files []
> Compaction succeeded in 211.9 ms (0s).
> {code}
> A quick fix would be to wrap the exception into a {{RuntimeException}}:
> {code}
> --- 
> a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
> +++ 
> b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
> @@ -127,7 +127,7 @@ public class Compact implements Runnable {
>  try {
>  compact();
>  } catch (Exception e) {
> -e.printStackTrace();
> +throw new RuntimeException("Failed to run compact", e);
>  }
>  }
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (OAK-6784) Exceptions are inhibited in oak-run compact

2017-10-05 Thread Valentin Olteanu (JIRA)
Valentin Olteanu created OAK-6784:
-

 Summary: Exceptions are inhibited in oak-run compact
 Key: OAK-6784
 URL: https://issues.apache.org/jira/browse/OAK-6784
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: run, segment-tar
Affects Versions: 1.7.8
Reporter: Valentin Olteanu
 Fix For: 1.8


Exceptions thrown by {{oak-run compact}} are inhibited so the exit code of the 
command is not correct in case of error. 

Example: 
{code}
$ java -jar oak-run-1.7.8-R1809845.jar compact test-oak-run/
Apache Jackrabbit Oak 1.7.8-R1809845
Compacting test-oak-run-6.3.0
With default access mode
before
Thu Oct 05 15:14:22 CEST 2017, journal.log
Thu Oct 05 15:14:23 CEST 2017, data0a.tar
Thu Oct 05 15:14:23 CEST 2017, manifest
Thu Oct 05 15:14:23 CEST 2017, repo.lock
size 119.1 MB (119133142 bytes)
-> compacting
org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException: Using 
a too recent version of oak-segment-tar
at 
org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkStoreVersion(ManifestChecker.java:81)
at 
org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkManifest(ManifestChecker.java:70)
at 
org.apache.jackrabbit.oak.segment.file.ManifestChecker.checkAndUpdateManifest(ManifestChecker.java:51)
at 
org.apache.jackrabbit.oak.segment.file.FileStore.(FileStore.java:191)
at 
org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.build(FileStoreBuilder.java:343)
at 
org.apache.jackrabbit.oak.segment.tool.Compact.newFileStore(Compact.java:165)
at 
org.apache.jackrabbit.oak.segment.tool.Compact.compact(Compact.java:135)
at org.apache.jackrabbit.oak.segment.tool.Compact.run(Compact.java:128)
at 
org.apache.jackrabbit.oak.run.SegmentTarUtils.compact(SegmentTarUtils.java:183)
at 
org.apache.jackrabbit.oak.run.CompactCommand.execute(CompactCommand.java:93)
at org.apache.jackrabbit.oak.run.Main.main(Main.java:49)
after
Thu Oct 05 15:14:22 CEST 2017, journal.log
Thu Oct 05 15:14:23 CEST 2017, data0a.tar
Thu Oct 05 15:14:23 CEST 2017, manifest
Thu Oct 05 15:14:23 CEST 2017, repo.lock
size 119.1 MB (119133142 bytes)
removed files []
added files []
Compaction succeeded in 211.9 ms (0s).
{code}

A quick fix would be to wrap the exception into a {{RuntimeException}}:
{code}
--- 
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
+++ 
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/tool/Compact.java
@@ -127,7 +127,7 @@ public class Compact implements Runnable {
 try {
 compact();
 } catch (Exception e) {
-e.printStackTrace();
+throw new RuntimeException("Failed to run compact", e);
 }
 }
{code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6560) Sidegrade uses too much memory

2017-08-23 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-6560?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16138613#comment-16138613
 ] 

Valentin Olteanu commented on OAK-6560:
---

[~tomek.rekawek], in this case, could you also implement some sort of progress 
logging (maybe at each write), similar to the "nodes copied"? I always felt 
that the commit phase was too silent and never knew if it the migration was 
blocked or not.

> Sidegrade uses too much memory
> --
>
> Key: OAK-6560
> URL: https://issues.apache.org/jira/browse/OAK-6560
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: upgrade
>Reporter: Tomek Rękawek
>Assignee: Tomek Rękawek
> Fix For: 1.8, 1.7.7
>
> Attachments: OAK-6560.patch, OAK-6560.patch
>
>
> Repo migration from old segment to oak segment tar requires heap memory 
> proportional to the repository size, which does not scale well for 
> large-scale repositories. Also, some structures (e.g. lots of direct 
> children) have a big impact on the memory footprint.
> For some repositories, the sidegrade requires as much as 40GB heap to perform 
> the migration, which might not be an option for most of the customers.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (OAK-6452) IllegalStateException: too much data for a segment during oak-upgrade from segment to segment-tar

2017-08-16 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu resolved OAK-6452.
---
Resolution: Cannot Reproduce

I've tried again the same command, but was not able to reproduce - it failed 
directly with OOM. Thus, I'm closing this issue and will open another one if 
needed.

> IllegalStateException: too much data for a segment during oak-upgrade from 
> segment to segment-tar
> -
>
> Key: OAK-6452
> URL: https://issues.apache.org/jira/browse/OAK-6452
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar, upgrade
>Affects Versions: 1.7.3
>Reporter: Valentin Olteanu
>Assignee: Valentin Olteanu
>Priority: Critical
> Fix For: 1.7.6
>
>
> During the migration of a big repo from the {{old-segment}} format to 
> {{segment-tar}} using {{oak-upgrade-1.7.3}}, I've got the following error:
> {code}
> 14.07.2017 09:05:51.920 [main] *INFO*  
> org.apache.jackrabbit.oak.upgrade.RepositorySidegrade - Copying node 
> #89333: /oak:index/uuid/:index/a9f9a3ed-6183-4e9e-9480-1b4fd196a829
> 14.07.2017 10:00:27.957 [TarMK flush 
> [extracted/crx-quickstart/repository-oak-upgrade/segmentstore]] *ERROR*  
> org.apache.jackrabbit.oak.segment.file.SafeRunnable - Uncaught exception in 
> TarMK flush [extracted/crx-quickstart/repository-oak-upgrade/segmentstore]
> java.lang.IllegalStateException: too much data for a segment
> at 
> org.apache.jackrabbit.oak.segment.SegmentBufferWriter.flush(SegmentBufferWriter.java:322)
>  ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.SegmentBufferWriterPool.flush(SegmentBufferWriterPool.java:142)
>  ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.DefaultSegmentWriter.flush(DefaultSegmentWriter.java:138)
>  ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$8.call(FileStore.java:345) 
> ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$8.call(FileStore.java:342) 
> ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.TarRevisions.doFlush(TarRevisions.java:213)
>  ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.TarRevisions.flush(TarRevisions.java:201)
>  ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.flush(FileStore.java:342) 
> ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$3.run(FileStore.java:242) 
> ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.SafeRunnable.run(SafeRunnable.java:67) 
> ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
> [na:1.8.0_131]
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
> [na:1.8.0_131]
> at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
>  [na:1.8.0_131]
> at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
>  [na:1.8.0_131]
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>  [na:1.8.0_131]
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>  [na:1.8.0_131]
> at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
> 14.07.2017 10:00:28.448 [main] *INFO*  
> org.apache.jackrabbit.oak.segment.file.FileStore - TarMK closed: 
> extracted/crx-quickstart/repository-oak-upgrade/segmentstore
> 14.07.2017 10:00:28.658 [main] *INFO*  
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore - TarMK closed: 
> extracted/crx-quickstart/repository/segmentstore
> Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit 
> exceeded
> at 
> org.apache.jackrabbit.oak.segment.RecordType.values(RecordType.java:24)
> at 
> org.apache.jackrabbit.oak.segment.ImmutableRecordNumbers$1$1.getType(ImmutableRecordNumbers.java:86)
> at 
> org.apache.jackrabbit.oak.segment.Segment.forEachRecord(Segment.java:703)
> at 
> org.apache.jackrabbit.oak.segment.file.AbstractFileStore.readBinaryReferences(AbstractFileStore.java:277)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.writeSegment(FileStore.java:511)
> at 
> org.apache.jackrabbit.oak.segment.SegmentBufferWriter.flush(SegmentBufferWriter.java:356)
> at 
> org.apache.jackrabbit.oak.segment.SegmentBufferWriter.prepare(SegmentBufferWriter.java:423)
> at 
> 

[jira] [Commented] (OAK-6452) IllegalStateException: too much data for a segment during oak-upgrade from segment to segment-tar

2017-07-14 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-6452?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16087360#comment-16087360
 ] 

Valentin Olteanu commented on OAK-6452:
---

[~frm], [~mduerig], can you please take a look?

> IllegalStateException: too much data for a segment during oak-upgrade from 
> segment to segment-tar
> -
>
> Key: OAK-6452
> URL: https://issues.apache.org/jira/browse/OAK-6452
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar, upgrade
>Affects Versions: 1.7.3
>Reporter: Valentin Olteanu
>Priority: Critical
> Fix For: 1.7.6
>
>
> During the migration of a big repo from the {{old-segment}} format to 
> {{segment-tar}} using {{oak-upgrade-1.7.3}}, I've got the following error:
> {code}
> 14.07.2017 09:05:51.920 [main] *INFO*  
> org.apache.jackrabbit.oak.upgrade.RepositorySidegrade - Copying node 
> #89333: /oak:index/uuid/:index/a9f9a3ed-6183-4e9e-9480-1b4fd196a829
> 14.07.2017 10:00:27.957 [TarMK flush 
> [extracted/crx-quickstart/repository-oak-upgrade/segmentstore]] *ERROR*  
> org.apache.jackrabbit.oak.segment.file.SafeRunnable - Uncaught exception in 
> TarMK flush [extracted/crx-quickstart/repository-oak-upgrade/segmentstore]
> java.lang.IllegalStateException: too much data for a segment
> at 
> org.apache.jackrabbit.oak.segment.SegmentBufferWriter.flush(SegmentBufferWriter.java:322)
>  ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.SegmentBufferWriterPool.flush(SegmentBufferWriterPool.java:142)
>  ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.DefaultSegmentWriter.flush(DefaultSegmentWriter.java:138)
>  ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$8.call(FileStore.java:345) 
> ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$8.call(FileStore.java:342) 
> ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.TarRevisions.doFlush(TarRevisions.java:213)
>  ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.TarRevisions.flush(TarRevisions.java:201)
>  ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.flush(FileStore.java:342) 
> ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$3.run(FileStore.java:242) 
> ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> org.apache.jackrabbit.oak.segment.file.SafeRunnable.run(SafeRunnable.java:67) 
> ~[oak-upgrade-1.7.3.jar:1.7.3]
> at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
> [na:1.8.0_131]
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
> [na:1.8.0_131]
> at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
>  [na:1.8.0_131]
> at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
>  [na:1.8.0_131]
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>  [na:1.8.0_131]
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>  [na:1.8.0_131]
> at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
> 14.07.2017 10:00:28.448 [main] *INFO*  
> org.apache.jackrabbit.oak.segment.file.FileStore - TarMK closed: 
> extracted/crx-quickstart/repository-oak-upgrade/segmentstore
> 14.07.2017 10:00:28.658 [main] *INFO*  
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore - TarMK closed: 
> extracted/crx-quickstart/repository/segmentstore
> Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit 
> exceeded
> at 
> org.apache.jackrabbit.oak.segment.RecordType.values(RecordType.java:24)
> at 
> org.apache.jackrabbit.oak.segment.ImmutableRecordNumbers$1$1.getType(ImmutableRecordNumbers.java:86)
> at 
> org.apache.jackrabbit.oak.segment.Segment.forEachRecord(Segment.java:703)
> at 
> org.apache.jackrabbit.oak.segment.file.AbstractFileStore.readBinaryReferences(AbstractFileStore.java:277)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.writeSegment(FileStore.java:511)
> at 
> org.apache.jackrabbit.oak.segment.SegmentBufferWriter.flush(SegmentBufferWriter.java:356)
> at 
> org.apache.jackrabbit.oak.segment.SegmentBufferWriter.prepare(SegmentBufferWriter.java:423)
> at 
> org.apache.jackrabbit.oak.segment.RecordWriters$RecordWriter.write(RecordWriters.java:70)
> at 
> 

[jira] [Created] (OAK-6452) IllegalStateException: too much data for a segment during oak-upgrade from segment to segment-tar

2017-07-14 Thread Valentin Olteanu (JIRA)
Valentin Olteanu created OAK-6452:
-

 Summary: IllegalStateException: too much data for a segment during 
oak-upgrade from segment to segment-tar
 Key: OAK-6452
 URL: https://issues.apache.org/jira/browse/OAK-6452
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: segment-tar, upgrade
Affects Versions: 1.7.3
Reporter: Valentin Olteanu
Priority: Critical
 Fix For: 1.7.6


During the migration of a big repo from the {{old-segment}} format to 
{{segment-tar}} using {{oak-upgrade-1.7.3}}, I've got the following error:
{code}
14.07.2017 09:05:51.920 [main] *INFO*  
org.apache.jackrabbit.oak.upgrade.RepositorySidegrade - Copying node 
#89333: /oak:index/uuid/:index/a9f9a3ed-6183-4e9e-9480-1b4fd196a829
14.07.2017 10:00:27.957 [TarMK flush 
[extracted/crx-quickstart/repository-oak-upgrade/segmentstore]] *ERROR*  
org.apache.jackrabbit.oak.segment.file.SafeRunnable - Uncaught exception in 
TarMK flush [extracted/crx-quickstart/repository-oak-upgrade/segmentstore]
java.lang.IllegalStateException: too much data for a segment
at 
org.apache.jackrabbit.oak.segment.SegmentBufferWriter.flush(SegmentBufferWriter.java:322)
 ~[oak-upgrade-1.7.3.jar:1.7.3]
at 
org.apache.jackrabbit.oak.segment.SegmentBufferWriterPool.flush(SegmentBufferWriterPool.java:142)
 ~[oak-upgrade-1.7.3.jar:1.7.3]
at 
org.apache.jackrabbit.oak.segment.DefaultSegmentWriter.flush(DefaultSegmentWriter.java:138)
 ~[oak-upgrade-1.7.3.jar:1.7.3]
at 
org.apache.jackrabbit.oak.segment.file.FileStore$8.call(FileStore.java:345) 
~[oak-upgrade-1.7.3.jar:1.7.3]
at 
org.apache.jackrabbit.oak.segment.file.FileStore$8.call(FileStore.java:342) 
~[oak-upgrade-1.7.3.jar:1.7.3]
at 
org.apache.jackrabbit.oak.segment.file.TarRevisions.doFlush(TarRevisions.java:213)
 ~[oak-upgrade-1.7.3.jar:1.7.3]
at 
org.apache.jackrabbit.oak.segment.file.TarRevisions.flush(TarRevisions.java:201)
 ~[oak-upgrade-1.7.3.jar:1.7.3]
at 
org.apache.jackrabbit.oak.segment.file.FileStore.flush(FileStore.java:342) 
~[oak-upgrade-1.7.3.jar:1.7.3]
at 
org.apache.jackrabbit.oak.segment.file.FileStore$3.run(FileStore.java:242) 
~[oak-upgrade-1.7.3.jar:1.7.3]
at 
org.apache.jackrabbit.oak.segment.file.SafeRunnable.run(SafeRunnable.java:67) 
~[oak-upgrade-1.7.3.jar:1.7.3]
at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
[na:1.8.0_131]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
[na:1.8.0_131]
at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
 [na:1.8.0_131]
at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
 [na:1.8.0_131]
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
[na:1.8.0_131]
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
[na:1.8.0_131]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
14.07.2017 10:00:28.448 [main] *INFO*  
org.apache.jackrabbit.oak.segment.file.FileStore - TarMK closed: 
extracted/crx-quickstart/repository-oak-upgrade/segmentstore
14.07.2017 10:00:28.658 [main] *INFO*  
org.apache.jackrabbit.oak.plugins.segment.file.FileStore - TarMK closed: 
extracted/crx-quickstart/repository/segmentstore
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit 
exceeded
at 
org.apache.jackrabbit.oak.segment.RecordType.values(RecordType.java:24)
at 
org.apache.jackrabbit.oak.segment.ImmutableRecordNumbers$1$1.getType(ImmutableRecordNumbers.java:86)
at 
org.apache.jackrabbit.oak.segment.Segment.forEachRecord(Segment.java:703)
at 
org.apache.jackrabbit.oak.segment.file.AbstractFileStore.readBinaryReferences(AbstractFileStore.java:277)
at 
org.apache.jackrabbit.oak.segment.file.FileStore.writeSegment(FileStore.java:511)
at 
org.apache.jackrabbit.oak.segment.SegmentBufferWriter.flush(SegmentBufferWriter.java:356)
at 
org.apache.jackrabbit.oak.segment.SegmentBufferWriter.prepare(SegmentBufferWriter.java:423)
at 
org.apache.jackrabbit.oak.segment.RecordWriters$RecordWriter.write(RecordWriters.java:70)
at 
org.apache.jackrabbit.oak.segment.DefaultSegmentWriter$SegmentWriteOperation.writeValueRecord(DefaultSegmentWriter.java:499)
at 
org.apache.jackrabbit.oak.segment.DefaultSegmentWriter$SegmentWriteOperation.writeString(DefaultSegmentWriter.java:518)
at 
org.apache.jackrabbit.oak.segment.DefaultSegmentWriter$SegmentWriteOperation.writeMap(DefaultSegmentWriter.java:324)
at 
org.apache.jackrabbit.oak.segment.DefaultSegmentWriter$SegmentWriteOperation.writeNodeUncached(DefaultSegmentWriter.java:870)
at 

[jira] [Commented] (OAK-4309) Align property labels and descriptions in SegmentNodeStoreService

2016-12-15 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4309?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15751710#comment-15751710
 ] 

Valentin Olteanu commented on OAK-4309:
---

[~mduerig], as a general note, should we specify the default values (hardcoded) 
in the descriptions so one can quickly see which values are changed when 
looking at the console page?

For the rest, I have some individual comments:
bq. +description = "TarMK mode (64 for memory mapped file access, 
32 for normal file access)."
Any hint on when to use one or the other?

bq. +description = "Cache size for storing most recently used 
segments in megabytes."
This is valid for all the cache properties: specify that increasing this will 
cause higher heap consumption so they need to ensure memory availability

bq. +label = "Disable estimation phase",
I would completely remove this option and specify that setting 
{{compaction.sizeDeltaEstimation}} to 0 will skip estimation. Should I open a 
separate issue for this?

{quote}
+description = "Boolean value indicating that a custom BlobStore is 
used for storing " +
+"large binary values."
{quote}
Is it {{BlobStore}} or {{DataStore}}? Should we mention that an additional 
config file for the specific DataStore is required ?

{quote}
+description = "Directory for storing repository backups. Defaults 
to 'segmentstore-backup' " +
+"subdirectory under 'repository.home'."
{quote}
Does this accept relative paths? If yes, relative to what?


Also, something a little outside of the scope of this issue: I would love to 
see the names of the properties also aligned, e.g. instead of 
{{pauseCompaction}} have {{compaction.pause}} etc. Yet, this might introduce 
even more backward non-compatibility...

> Align property labels and descriptions in SegmentNodeStoreService
> -
>
> Key: OAK-4309
> URL: https://issues.apache.org/jira/browse/OAK-4309
> Project: Jackrabbit Oak
>  Issue Type: Task
>  Components: segment-tar
>Reporter: Michael Dürig
>Assignee: Michael Dürig
>  Labels: production
> Fix For: 1.5.16, 1.6
>
>
> We need to align / improve the labels and descriptions in 
> {{SegmentNodeStoreService}} to match their actual purpose. At the same time I 
> would opt for changing "compaction" to "revision gc" in all places where it 
> is used synonymously for the latter. 



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


[jira] [Commented] (OAK-5225) Online compaction throttling

2016-12-07 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-5225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15729104#comment-15729104
 ] 

Valentin Olteanu commented on OAK-5225:
---

[~alex.parvulescu], I haven't looked in depth to the patch, but have you 
considered not adding sleeps during {{forceCompact}}? It wouldn't make sense to 
delay compaction while the repository is locked.

> Online compaction throttling
> 
>
> Key: OAK-5225
> URL: https://issues.apache.org/jira/browse/OAK-5225
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: segment-tar
>Reporter: Alex Parvulescu
>Assignee: Alex Parvulescu
> Fix For: 1.6, 1.5.16
>
>
> This is for the throttling part of OAK-5158.



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


[jira] [Updated] (OAK-5161) Improve logging of compaction cycles

2016-11-24 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu updated OAK-5161:
--
Attachment: OAK-5161.patch

[~mduerig], [~frm] or [~alex.parvulescu]: could you please take a look at the 
attached patch and see if it's worth adding this?


> Improve logging of compaction cycles
> 
>
> Key: OAK-5161
> URL: https://issues.apache.org/jira/browse/OAK-5161
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: segment-tar
>Reporter: Valentin Olteanu
>Priority: Minor
> Attachments: OAK-5161.patch
>
>
> It would be useful to have logs with more info related to the compaction 
> cycles, e.g. how much each takes, show if force compact was successful.



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


[jira] [Updated] (OAK-5161) Improve logging of compaction cycles

2016-11-24 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu updated OAK-5161:
--
Priority: Minor  (was: Major)

> Improve logging of compaction cycles
> 
>
> Key: OAK-5161
> URL: https://issues.apache.org/jira/browse/OAK-5161
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: segment-tar
>Reporter: Valentin Olteanu
>Priority: Minor
>
> It would be useful to have logs with more info related to the compaction 
> cycles, e.g. how much each takes, show if force compact was successful.



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


[jira] [Created] (OAK-5161) Improve logging of compaction cycles

2016-11-24 Thread Valentin Olteanu (JIRA)
Valentin Olteanu created OAK-5161:
-

 Summary: Improve logging of compaction cycles
 Key: OAK-5161
 URL: https://issues.apache.org/jira/browse/OAK-5161
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: segment-tar
Reporter: Valentin Olteanu


It would be useful to have logs with more info related to the compaction 
cycles, e.g. how much each takes, show if force compact was successful.



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


[jira] [Commented] (OAK-5158) Online compaction progress monitor

2016-11-24 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-5158?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15693482#comment-15693482
 ] 

Valentin Olteanu commented on OAK-5158:
---

+1 to separating {{logCycle}} from {{sleepPerCycle}}. One might want to have a 
less granular logging, but shorter sleep cycles.

> Online compaction progress monitor
> --
>
> Key: OAK-5158
> URL: https://issues.apache.org/jira/browse/OAK-5158
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: segment-tar
>Reporter: Alex Parvulescu
>Assignee: Alex Parvulescu
> Fix For: 1.6, 1.5.15
>
> Attachments: OAK-5158.patch
>
>
> Having an online compaction progress monitor open the door for providing a 
> (fuzzy) percentage of completion. Similar to the offline progress tracker, it 
> would be responsible for logging progress at a configurable interval but also 
> providing {{current number of compacted nodes}} and {{estimated number of 
> total nodes}}.
> I'd also like to add the possibility to sleep a few ms each cycle, this can 
> introduce throttling options for online compaction in the case the impact is 
> too great on the system.



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


[jira] [Commented] (OAK-5058) Improve GC estimation strategy based on both absolute size and relative percentage

2016-11-23 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-5058?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15690305#comment-15690305
 ] 

Valentin Olteanu commented on OAK-5058:
---

I think having two settings for the same thing is an overkill and introduces 
unnecessary confusion and complication in determining when compaction will run.

The reason to have an estimation is to save cpu cycles by determining with a 
*simple heuristic* if it's worth running compaction. This check should be easy 
to understand and the default setting should work in most of the cases, but for 
sure cannot meet all the needs, thus leaving the config option to the user. 

To summarize the three options, here's a list of advantages and disadvantages 
that I see:

1. Only absolute delta threshold
* PRO: ensures compaction will not run when the growth is very small, 
independently of the repo size: e.g. an increase of 1GB shows that you can 
potentially save max 1GB, which makes it easy to relate to exact disk size
* PRO: easy to understand and foresee 
* CON: when the delta is set too high, the repo might grow too much, thus 
taking longer to compact

2. Only relative delta threshold
* PRO: ensures compaction will also run on smaller repos which don't grow too 
much
* PRO: easy to understand and foresee 
* CON: might trigger a compaction that saves only a few MB in case of small 
repos - in this case compaction should anyway be fast, so it's not that bad

3. Both relative and absolute delta threshold
* PRO: (potentially) finer control of when to trigger compaction
* CON: confusing and hard to foresee
* CON: hard to get the two values correlated + needs exhaustive documentation
* CON: can lead to weird cases, e.g. if one wants to rely only on one of the 
thresholds. 

Personally I would go for the relative check, but maybe more input on PROs / 
CONs should be considered.

As a side note, I think we should remove {{compaction.disableEstimation}} and 
keep it simple, as it's the case for {{compaction.memoryThreshold}}: 
{code}
Value represents a percentage so an input between 0 and 100 is expected. 
Setting this to 0 will disable the check. 
{code}

> Improve GC estimation strategy based on both absolute size and relative 
> percentage
> --
>
> Key: OAK-5058
> URL: https://issues.apache.org/jira/browse/OAK-5058
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: segment-tar
>Affects Versions: 1.5.12
>Reporter: Andrei Dulceanu
>Assignee: Andrei Dulceanu
>Priority: Minor
> Fix For: 1.6, 1.5.15
>
> Attachments: OAK-5058-01.patch
>
>
> A better way of deciding whether GC should run or not might be by looking at 
> the numbers computed in {{SizeDeltaGcEstimation}} from both an absolute size 
> and relative percentage point of view. For example it would make sense to  
> run compaction only if at least one criterion is met: "run if there is > 50% 
> increase or more than 10GB".
> Since the absolute threshold is already implemented (see 
> {{SegmentGCOptions.SIZE_DELTA_ESTIMATION_DEFAULT}}), it would be nice to add 
> also something like {{SegmentGCOptions.SIZE_PERCENTAGE_ESTIMATION_DEFAULT}} 
> and use it in making the decision.



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


[jira] [Commented] (OAK-5117) Improve checkMemory for compaction

2016-11-16 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-5117?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15670839#comment-15670839
 ] 

Valentin Olteanu commented on OAK-5117:
---

I agree, it's simpler and cleaner. 

> Improve checkMemory for compaction
> --
>
> Key: OAK-5117
> URL: https://issues.apache.org/jira/browse/OAK-5117
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: segment-tar
>Reporter: Valentin Olteanu
>Assignee: Alex Parvulescu
> Fix For: 1.6, 1.5.14
>
> Attachments: OAK-5117-v2.patch, OAK-5117.patch
>
>
> The check introduced in OAK-4966 is relying on the first {{MemoryPoolMXBean}} 
> found that matches the criteria. This means that, depending on the JVM, it 
> will be checking any of the: PS Eden Space, PS Survivor Space or PS Old Gen 
> Space - whichever is found first. 
> I am proposing a more reliable way to check this:
> 1. check the biggest pool - this usually corresponds to PS Old Gen (by 
> default 2/3 of the heap), which is more stable and reflects better the usage 
> of the heap.
> 2. use {{getCollectionUsage()}} instead of {{getUsage()}} to check the state 
> of the heap after a GC. This way we avoid checking during temporary peaks of 
> the used heap.



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


[jira] [Commented] (OAK-5069) Backup fails when called from RepositoryManagementMBean#startBackup

2016-11-08 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-5069?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15647123#comment-15647123
 ] 

Valentin Olteanu commented on OAK-5069:
---

I would say this is more a parameter to `startBackup` and `startRestore` than a 
global config (one might want to call `startBackup` at different times for 
different destinations - think about hourly/daily/monthly backups). 

In any case, I agree it should have a sensitive default, but I would go for the 
more homogenous `segmentstore-backup` :) 

Correct me if I'm wrong but I think this is an incremental backup. If not, 
maybe the default should include a timestamp.

> Backup fails when called from RepositoryManagementMBean#startBackup
> ---
>
> Key: OAK-5069
> URL: https://issues.apache.org/jira/browse/OAK-5069
> Project: Jackrabbit Oak
>  Issue Type: Bug
>Affects Versions: 1.5.12
>Reporter: Andrei Dulceanu
>Assignee: Andrei Dulceanu
> Fix For: 1.5.14
>
>
> When calling {{RepositoryManagementMBean.startBackup}}, the operation fails 
> with the following stacktrace:
> {code:java}
> 04.11.2016 13:12:56.733 *ERROR* [qtp2039314079-250] 
> org.apache.jackrabbit.oak.management.ManagementOperation Backup failed
> java.lang.IllegalStateException: /repository/segmentstore is in use by 
> another store.
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.(FileStore.java:168)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.build(FileStoreBuilder.java:304)
> at 
> org.apache.jackrabbit.oak.backup.impl.FileStoreBackupImpl.backup(FileStoreBackupImpl.java:65)
> at 
> org.apache.jackrabbit.oak.backup.impl.FileStoreBackupRestoreImpl$1.call(FileStoreBackupRestoreImpl.java:102)
> at 
> org.apache.jackrabbit.oak.backup.impl.FileStoreBackupRestoreImpl$1.call(FileStoreBackupRestoreImpl.java:97)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.nio.channels.OverlappingFileLockException: null
> at sun.nio.ch.SharedFileLockTable.checkList(FileLockTable.java:255)
> at sun.nio.ch.SharedFileLockTable.add(FileLockTable.java:152)
> at sun.nio.ch.FileChannelImpl.lock(FileChannelImpl.java:1062)
> at java.nio.channels.FileChannel.lock(FileChannel.java:1053)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.(FileStore.java:166)
> ... 8 common frames omitted
> {code}
> /cc [~mduerig]



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


[jira] [Comment Edited] (OAK-5069) Backup fails when called from RepositoryManagementMBean#startBackup

2016-11-08 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-5069?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15647123#comment-15647123
 ] 

Valentin Olteanu edited comment on OAK-5069 at 11/8/16 10:05 AM:
-

I would say this is more a parameter to {{startBackup}} and {{startRestore}} 
than a global config (one might want to call {{startBackup}} at different times 
for different destinations - think about hourly/daily/monthly backups). 

In any case, I agree it should have a sensitive default, but I would go for the 
more homogenous {{segmentstore-backup}} :) 

Correct me if I'm wrong but I think this is an incremental backup. If not, 
maybe the default should include a timestamp.


was (Author: volteanu):
I would say this is more a parameter to `startBackup` and `startRestore` than a 
global config (one might want to call `startBackup` at different times for 
different destinations - think about hourly/daily/monthly backups). 

In any case, I agree it should have a sensitive default, but I would go for the 
more homogenous `segmentstore-backup` :) 

Correct me if I'm wrong but I think this is an incremental backup. If not, 
maybe the default should include a timestamp.

> Backup fails when called from RepositoryManagementMBean#startBackup
> ---
>
> Key: OAK-5069
> URL: https://issues.apache.org/jira/browse/OAK-5069
> Project: Jackrabbit Oak
>  Issue Type: Bug
>Affects Versions: 1.5.12
>Reporter: Andrei Dulceanu
>Assignee: Andrei Dulceanu
> Fix For: 1.5.14
>
>
> When calling {{RepositoryManagementMBean.startBackup}}, the operation fails 
> with the following stacktrace:
> {code:java}
> 04.11.2016 13:12:56.733 *ERROR* [qtp2039314079-250] 
> org.apache.jackrabbit.oak.management.ManagementOperation Backup failed
> java.lang.IllegalStateException: /repository/segmentstore is in use by 
> another store.
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.(FileStore.java:168)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.build(FileStoreBuilder.java:304)
> at 
> org.apache.jackrabbit.oak.backup.impl.FileStoreBackupImpl.backup(FileStoreBackupImpl.java:65)
> at 
> org.apache.jackrabbit.oak.backup.impl.FileStoreBackupRestoreImpl$1.call(FileStoreBackupRestoreImpl.java:102)
> at 
> org.apache.jackrabbit.oak.backup.impl.FileStoreBackupRestoreImpl$1.call(FileStoreBackupRestoreImpl.java:97)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.nio.channels.OverlappingFileLockException: null
> at sun.nio.ch.SharedFileLockTable.checkList(FileLockTable.java:255)
> at sun.nio.ch.SharedFileLockTable.add(FileLockTable.java:152)
> at sun.nio.ch.FileChannelImpl.lock(FileChannelImpl.java:1062)
> at java.nio.channels.FileChannel.lock(FileChannel.java:1053)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.(FileStore.java:166)
> ... 8 common frames omitted
> {code}
> /cc [~mduerig]



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


[jira] [Commented] (OAK-5000) Upgrade Oak Segment Tar dependency to 0.0.18

2016-10-25 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-5000?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15605344#comment-15605344
 ] 

Valentin Olteanu commented on OAK-5000:
---

+1

> Upgrade Oak Segment Tar dependency to 0.0.18
> 
>
> Key: OAK-5000
> URL: https://issues.apache.org/jira/browse/OAK-5000
> Project: Jackrabbit Oak
>  Issue Type: Task
>  Components: parent
>Reporter: Davide Giannella
>Assignee: Michael Dürig
>Priority: Blocker
> Fix For: 1.5.13
>
>




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


[jira] [Commented] (OAK-4617) Align SegmentRevisionGC MBean with new generation based GC

2016-10-18 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15584895#comment-15584895
 ] 

Valentin Olteanu commented on OAK-4617:
---

Regarding this, the current "Status" is showing the last log info. This is 
useful, but it would also be interesting to expose the real-time status. For 
monitoring it would be useful to know exactly in which phase we are, e.g. a 
field showing on of the following:
- idle
- estimation
- compaction
- compaction-retry-1
- compaction-retry-2
- compaction-forcecompact
- cleanup

Do you think this is possible/useful to add it to this MBean?


> Align SegmentRevisionGC MBean with new generation based GC
> --
>
> Key: OAK-4617
> URL: https://issues.apache.org/jira/browse/OAK-4617
> Project: Jackrabbit Oak
>  Issue Type: Task
>  Components: segment-tar
>Reporter: Michael Dürig
>Assignee: Michael Dürig
>  Labels: production
> Fix For: Segment Tar 0.0.16
>
>
> The {{SegmentRevisionGC}} MBean still dates back to the old {{oak-segment}}. 
> We need to review its endpoints and only keep those that make sense for 
> {{oak-segment-tar}}, adapt the others as necessary any add further 
> functionality as required. 



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


[jira] [Comment Edited] (OAK-4901) Improve SizeDeltaGcEstimation logging

2016-10-07 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4901?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15552536#comment-15552536
 ] 

Valentin Olteanu edited comment on OAK-4901 at 10/7/16 7:52 AM:


[~alex.parvulescu] could you please review the attached patch? Thanks! 

PS: I've just realized the patch has an unwanted change in {{pom.xml}} which 
should be ignored.


was (Author: volteanu):
[~alex.parvulescu] could you please review the attached patch? Thanks! 

> Improve SizeDeltaGcEstimation logging
> -
>
> Key: OAK-4901
> URL: https://issues.apache.org/jira/browse/OAK-4901
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.14
>Reporter: Valentin Olteanu
>Priority: Minor
> Attachments: OAK-4901.patch
>
>
> The current message logged after estimation is not very clear for someone 
> that does not know how it works:
> {code}
> 06.10.2016 18:53:07.819 *INFO* [TarMK revision gc 
> [/Users/volteanu/workspace/test/author/crx-quickstart/repository/segmentstore]]
>  org.apache.jackrabbit.oak.segment.file.FileStore TarMK GC #1: estimation 
> completed in 7.362 ms (7 ms). Size delta is 0% or 880.3 MB/880.9 MB 
> (880258560/880892416 bytes), so skipping compaction for now
> {code}
> I think it should also list the delta in absolute value and the threshold it 
> is compared against.



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


[jira] [Updated] (OAK-4901) Improve SizeDeltaGcEstimation logging

2016-10-06 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu updated OAK-4901:
--
Attachment: OAK-4901.patch

[~alex.parvulescu] could you please review the attached patch? Thanks! 

> Improve SizeDeltaGcEstimation logging
> -
>
> Key: OAK-4901
> URL: https://issues.apache.org/jira/browse/OAK-4901
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.14
>Reporter: Valentin Olteanu
>Priority: Minor
> Attachments: OAK-4901.patch
>
>
> The current message logged after estimation is not very clear for someone 
> that does not know how it works:
> {code}
> 06.10.2016 18:53:07.819 *INFO* [TarMK revision gc 
> [/Users/volteanu/workspace/test/author/crx-quickstart/repository/segmentstore]]
>  org.apache.jackrabbit.oak.segment.file.FileStore TarMK GC #1: estimation 
> completed in 7.362 ms (7 ms). Size delta is 0% or 880.3 MB/880.9 MB 
> (880258560/880892416 bytes), so skipping compaction for now
> {code}
> I think it should also list the delta in absolute value and the threshold it 
> is compared against.



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


[jira] [Created] (OAK-4901) Improve SizeDeltaGcEstimation logging

2016-10-06 Thread Valentin Olteanu (JIRA)
Valentin Olteanu created OAK-4901:
-

 Summary: Improve SizeDeltaGcEstimation logging
 Key: OAK-4901
 URL: https://issues.apache.org/jira/browse/OAK-4901
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: segment-tar
Affects Versions: Segment Tar 0.0.14
Reporter: Valentin Olteanu
Priority: Minor


The current message logged after estimation is not very clear for someone that 
does not know how it works:
{code}
06.10.2016 18:53:07.819 *INFO* [TarMK revision gc 
[/Users/volteanu/workspace/test/author/crx-quickstart/repository/segmentstore]] 
org.apache.jackrabbit.oak.segment.file.FileStore TarMK GC #1: estimation 
completed in 7.362 ms (7 ms). Size delta is 0% or 880.3 MB/880.9 MB 
(880258560/880892416 bytes), so skipping compaction for now
{code}

I think it should also list the delta in absolute value and the threshold it is 
compared against.



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


[jira] [Commented] (OAK-3695) Expose ratio between waste and real data

2016-08-23 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-3695?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15432339#comment-15432339
 ] 

Valentin Olteanu commented on OAK-3695:
---

Indeed, this info is interesting especially in the context of compaction. 
Customers might want to have some statistics about it in order to decide their 
maintenance schedule,  but since it proves to be an expensive operation, I am 
fine to have it as a functionality of {{oak-run}} (especially that it can now 
run in read-only mode on open repositories, right?).

Besides, for development and testing, this would be priceless.


> Expose ratio between waste and real data
> 
>
> Key: OAK-3695
> URL: https://issues.apache.org/jira/browse/OAK-3695
> Project: Jackrabbit Oak
>  Issue Type: Story
>  Components: segment-tar
>Reporter: Valentin Olteanu
>  Labels: gc
>
> As a user, I want to know the ratio (or precise absolute values) between 
> waste and real data on TarMK, so that I can decide if Revision GC needs to be 
> run. The measurement has to be done on a running repository and without 
> impacting the performance.
> This would also help measure the efficiency of Revision GC and see the effect 
> of improvements. 



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


[jira] [Updated] (OAK-4555) Deadlock in CompactionStats.writeNode during online compaction

2016-07-13 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu updated OAK-4555:
--
Attachment: stacktrace.log

> Deadlock in CompactionStats.writeNode during online compaction
> --
>
> Key: OAK-4555
> URL: https://issues.apache.org/jira/browse/OAK-4555
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.2
>Reporter: Valentin Olteanu
> Attachments: stacktrace.log
>
>
> While running online revision cleanup under high load, the instance reached a 
> deadlock (or possible infinite loop).
> Full thread dump is attached, but it seems that:
> 1. Thread-21 tries to commit -> CompactionStats.writeNode -> locked by 
> compaction thread
> 2. TarMK compaction thread tries to compact -> print statistics -> infinite 
> loop



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


[jira] [Commented] (OAK-4555) Deadlock in CompactionStats.writeNode during online compaction

2016-07-13 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4555?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15375113#comment-15375113
 ] 

Valentin Olteanu commented on OAK-4555:
---

[~frm], this is the issue I've showed you live :) Please let me know if you 
need more info. 

> Deadlock in CompactionStats.writeNode during online compaction
> --
>
> Key: OAK-4555
> URL: https://issues.apache.org/jira/browse/OAK-4555
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.2
>Reporter: Valentin Olteanu
> Attachments: stacktrace.log
>
>
> While running online revision cleanup under high load, the instance reached a 
> deadlock (or possible infinite loop).
> Full thread dump is attached, but it seems that:
> 1. Thread-21 tries to commit -> CompactionStats.writeNode -> locked by 
> compaction thread
> 2. TarMK compaction thread tries to compact -> print statistics -> infinite 
> loop



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


[jira] [Created] (OAK-4555) Deadlock in CompactionStats.writeNode during online compaction

2016-07-13 Thread Valentin Olteanu (JIRA)
Valentin Olteanu created OAK-4555:
-

 Summary: Deadlock in CompactionStats.writeNode during online 
compaction
 Key: OAK-4555
 URL: https://issues.apache.org/jira/browse/OAK-4555
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: segment-tar
Affects Versions: Segment Tar 0.0.2
Reporter: Valentin Olteanu
 Attachments: stacktrace.log

While running online revision cleanup under high load, the instance reached a 
deadlock (or possible infinite loop).

Full thread dump is attached, but it seems that:
1. Thread-21 tries to commit -> CompactionStats.writeNode -> locked by 
compaction thread
2. TarMK compaction thread tries to compact -> print statistics -> infinite loop




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


[jira] [Commented] (OAK-4400) Correlate index with the index definition used to build it

2016-05-24 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4400?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15298468#comment-15298468
 ] 

Valentin Olteanu commented on OAK-4400:
---

[~tmueller], we have discussed a little about this offline, so I created the 
issue to continue the idea. I'm not an indexing expert and I might have 
imagined too much, so please add your input here and let me know what you think 
about this. 

> Correlate index with the index definition used to build it
> --
>
> Key: OAK-4400
> URL: https://issues.apache.org/jira/browse/OAK-4400
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: lucene, query
>Affects Versions: 1.4
>Reporter: Valentin Olteanu
>
> Currently, if the definition of an index is changed without reindexing, it 
> will get in an "inconsistent" state. 
> Of course, the reindexing is usually necessary, but it would be useful to 
> know with which definition the index was built. This could increase the 
> visibility of the indexing state and help debugging issues related to it.
> Some questions this improvement should respond to:
> # What is the definition of the index when the (re)indexing was triggered?
> # Are there any changes in the definition since the trigger? Which?
> I can imagine a solution built by "versioning" the definition nodes 
> (oak:QueryIndexDefinition). When the reindex is triggered, a new version of 
> the node is created and the indexer stores a reference to it.
> This would also allow the indexer to keep using the same definition until a 
> new reindex, even if changes are made meanwhile (i.e. use a fixed version 
> instead of the latest definition).



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


[jira] [Created] (OAK-4400) Correlate index with the index definition used to build it

2016-05-24 Thread Valentin Olteanu (JIRA)
Valentin Olteanu created OAK-4400:
-

 Summary: Correlate index with the index definition used to build it
 Key: OAK-4400
 URL: https://issues.apache.org/jira/browse/OAK-4400
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: lucene, query
Affects Versions: 1.4
Reporter: Valentin Olteanu


Currently, if the definition of an index is changed without reindexing, it will 
get in an "inconsistent" state. 

Of course, the reindexing is usually necessary, but it would be useful to know 
with which definition the index was built. This could increase the visibility 
of the indexing state and help debugging issues related to it.

Some questions this improvement should respond to:
# What is the definition of the index when the (re)indexing was triggered?
# Are there any changes in the definition since the trigger? Which?

I can imagine a solution built by "versioning" the definition nodes 
(oak:QueryIndexDefinition). When the reindex is triggered, a new version of the 
node is created and the indexer stores a reference to it.
This would also allow the indexer to keep using the same definition until a new 
reindex, even if changes are made meanwhile (i.e. use a fixed version instead 
of the latest definition).



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


[jira] [Commented] (OAK-4211) FileAccess.Mapped leaks file channels

2016-04-18 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15245421#comment-15245421
 ] 

Valentin Olteanu commented on OAK-4211:
---

[~mduerig], is the leak triggered only in the case of OAK-3348? 

> FileAccess.Mapped leaks file channels 
> --
>
> Key: OAK-4211
> URL: https://issues.apache.org/jira/browse/OAK-4211
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segmentmk
>Reporter: Michael Dürig
> Fix For: 1.6
>
>
> {{FileAccess.Mapped}} seems to leak {{FileChannnel}} instances. The file 
> channels are acquired in the constructor but never release. 
> FYI [~alex.parvulescu], [~frm]



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


[jira] [Comment Edited] (OAK-3814) Collect and expose important runtime statistics across various part of Oak

2016-01-05 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-3814?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15082844#comment-15082844
 ] 

Valentin Olteanu edited comment on OAK-3814 at 1/5/16 11:02 AM:


Indeed, this epic has a broader scope but includes OAK-3693. We can move the 
issues here and close it.


was (Author: volteanu):
Indeed, this epic have a broader scope but includes OAK-3693. We can move the 
issues here and close it.

> Collect and expose important runtime statistics across various part of Oak
> --
>
> Key: OAK-3814
> URL: https://issues.apache.org/jira/browse/OAK-3814
> Project: Jackrabbit Oak
>  Issue Type: Epic
>Reporter: Chetan Mehrotra
>Assignee: Chetan Mehrotra
> Fix For: 1.4
>
>
> Aim of this epic is to improve the collection of runtime statistics across 
> various sub systems in Oak. This would enable following benefits
> # Better insight into operational aspects of Oak
> # Better integration with external monitoring system based on JMX
> # Based on stats we can decide what needs to be done to make Oak perform 
> better i.e. based on actual usage data



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


[jira] [Updated] (OAK-3694) As a user, I want to know when a node that I've created has been indexed.

2015-12-07 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu updated OAK-3694:
--
Description: 
As a user, I want to know when a node that I've created has been indexed so 
that I can start using it.
Generalization: As a user, I want to know when everything created before 
timestamp T0 has been indexed. 

Ideal solution: MBean operation {{bool isIndexedBefore(long timestamp)}} that 
returns {{true}} if everything created before {{timestamp}} has been indexed 
(by all indexers).

Current options: 
# check IndexStatsMBean for Start and Done to determine if a cycle has started 
after adding the node and has finished. Issue: there can be multiple async 
indexers. OAK-3606 proposes a solution.
# add a node and search for it until it is retrieved. Issue: must add different 
nodes for different indexers and wait for all. 

These options are not precise (give false positives) and are not resilient to 
changes in indexing strategy (e.g. adding one more indexer breaks the checks). 

  was:
As a user, I want to know when a node that I've created has been indexed so 
that I can start using it.
Generalization: As a user, I want to know when everything created before 
timestamp T0 has been indexed. 

Current options: (1) check  


> As a user, I want to know when a node that I've created has been indexed.
> -
>
> Key: OAK-3694
> URL: https://issues.apache.org/jira/browse/OAK-3694
> Project: Jackrabbit Oak
>  Issue Type: Story
>Reporter: Valentin Olteanu
>
> As a user, I want to know when a node that I've created has been indexed so 
> that I can start using it.
> Generalization: As a user, I want to know when everything created before 
> timestamp T0 has been indexed. 
> Ideal solution: MBean operation {{bool isIndexedBefore(long timestamp)}} that 
> returns {{true}} if everything created before {{timestamp}} has been indexed 
> (by all indexers).
> Current options: 
> # check IndexStatsMBean for Start and Done to determine if a cycle has 
> started after adding the node and has finished. Issue: there can be multiple 
> async indexers. OAK-3606 proposes a solution.
> # add a node and search for it until it is retrieved. Issue: must add 
> different nodes for different indexers and wait for all. 
> These options are not precise (give false positives) and are not resilient to 
> changes in indexing strategy (e.g. adding one more indexer breaks the 
> checks). 



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


[jira] [Commented] (OAK-3694) As a user, I want to know when a node that I've created has been indexed.

2015-12-07 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-3694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15044760#comment-15044760
 ] 

Valentin Olteanu commented on OAK-3694:
---

[~chetanm], as discussed during the oakathon, I've updated the story with the 
requirements. Thierry had proposed a solution on OAK-3606, but please comment 
with any idea that you have on this. 
It would be really helpful to have this done in a reliable way. 
Thanks!

> As a user, I want to know when a node that I've created has been indexed.
> -
>
> Key: OAK-3694
> URL: https://issues.apache.org/jira/browse/OAK-3694
> Project: Jackrabbit Oak
>  Issue Type: Story
>Reporter: Valentin Olteanu
>
> As a user, I want to know when a node that I've created has been indexed so 
> that I can start using it.
> Generalization: As a user, I want to know when everything created before 
> timestamp T0 has been indexed. 
> Ideal solution: MBean operation {{bool isIndexedBefore(long timestamp)}} that 
> returns {{true}} if everything created before {{timestamp}} has been indexed 
> (by all indexers).
> Current options: 
> # check IndexStatsMBean for Start and Done to determine if a cycle has 
> started after adding the node and has finished. Issue: there can be multiple 
> async indexers. OAK-3606 proposes a solution.
> # add a node and search for it until it is retrieved. Issue: must add 
> different nodes for different indexers and wait for all. 
> These options are not precise (give false positives) and are not resilient to 
> changes in indexing strategy (e.g. adding one more indexer breaks the 
> checks). 



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


[jira] [Updated] (OAK-3694) As a user, I want to know when a node that I've created has been indexed.

2015-12-07 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu updated OAK-3694:
--
Description: 
As a user, I want to know when a node that I've created has been indexed so 
that I can start using it.
Generalization: As a user, I want to know when everything created before 
timestamp T0 has been indexed. 

Current options: (1) check  

  was:
As a user, I want to know when a node that I've created has been indexed so 
that I can start using it.

Generalization: As a user, I want to know when everything created before 
timestamp T0 has been indexed. 


> As a user, I want to know when a node that I've created has been indexed.
> -
>
> Key: OAK-3694
> URL: https://issues.apache.org/jira/browse/OAK-3694
> Project: Jackrabbit Oak
>  Issue Type: Story
>Reporter: Valentin Olteanu
>
> As a user, I want to know when a node that I've created has been indexed so 
> that I can start using it.
> Generalization: As a user, I want to know when everything created before 
> timestamp T0 has been indexed. 
> Current options: (1) check  



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


[jira] [Created] (OAK-3693) Expose the internal state of the repository through indicators and checks

2015-11-30 Thread Valentin Olteanu (JIRA)
Valentin Olteanu created OAK-3693:
-

 Summary: Expose the internal state of the repository through 
indicators and checks
 Key: OAK-3693
 URL: https://issues.apache.org/jira/browse/OAK-3693
 Project: Jackrabbit Oak
  Issue Type: Epic
Reporter: Valentin Olteanu


This container groups all the issues related to areas where we could improve 
the monitoring of an OAK repository. This can be achieved by exposing different 
indicators of the internal state and adding checks for certain properties.



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


[jira] [Updated] (OAK-3693) Expose the internal state of the repository through indicators and checks

2015-11-30 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu updated OAK-3693:
--
Description: 
This container groups all the issues related to areas where we could improve 
the monitoring of an OAK repository. This can be achieved by exposing different 
indicators of the internal state and adding checks for certain properties.

Areas to improve:
* Async Indexing
* Revision GC
* Topology changes


  was:This container groups all the issues related to areas where we could 
improve the monitoring of an OAK repository. This can be achieved by exposing 
different indicators of the internal state and adding checks for certain 
properties.


> Expose the internal state of the repository through indicators and checks
> -
>
> Key: OAK-3693
> URL: https://issues.apache.org/jira/browse/OAK-3693
> Project: Jackrabbit Oak
>  Issue Type: Epic
>Reporter: Valentin Olteanu
>
> This container groups all the issues related to areas where we could improve 
> the monitoring of an OAK repository. This can be achieved by exposing 
> different indicators of the internal state and adding checks for certain 
> properties.
> Areas to improve:
> * Async Indexing
> * Revision GC
> * Topology changes



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


[jira] [Created] (OAK-3694) As a user, I want to know when a node that I've created has been indexed.

2015-11-30 Thread Valentin Olteanu (JIRA)
Valentin Olteanu created OAK-3694:
-

 Summary: As a user, I want to know when a node that I've created 
has been indexed.
 Key: OAK-3694
 URL: https://issues.apache.org/jira/browse/OAK-3694
 Project: Jackrabbit Oak
  Issue Type: Story
Reporter: Valentin Olteanu


As a user, I want to know when a node that I've created has been indexed so 
that I can start using it.

Generalization: As a user, I want to know when everything created before 
timestamp T0 has been indexed. 



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


[jira] [Created] (OAK-3695) As a user, I want to know the ratio between waste and real data

2015-11-30 Thread Valentin Olteanu (JIRA)
Valentin Olteanu created OAK-3695:
-

 Summary: As a user, I want to know the ratio between waste and 
real data
 Key: OAK-3695
 URL: https://issues.apache.org/jira/browse/OAK-3695
 Project: Jackrabbit Oak
  Issue Type: Story
Reporter: Valentin Olteanu


As a user, I want to know the ratio (or precise absolute values) between waste 
and real data on TarMK, so that I can decide if Revision GC needs to be run. 
The measurement has to be done on a running repository and without impacting 
the performance.

This would also help measure the efficiency of Revision GC and see the effect 
of improvements. 



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


[jira] [Updated] (OAK-3693) Expose the internal state of the repository through indicators and checks

2015-11-30 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu updated OAK-3693:
--
Description: 
This container groups all the issues related to areas where we could improve 
the monitoring of an OAK repository. This can be achieved by exposing different 
indicators of the internal state and adding checks for certain properties.

Areas to improve:
* Async Indexing
* Revision GC



  was:
This container groups all the issues related to areas where we could improve 
the monitoring of an OAK repository. This can be achieved by exposing different 
indicators of the internal state and adding checks for certain properties.

Areas to improve:
* Async Indexing
* Revision GC
* Topology changes
* Workflows
* Replication




> Expose the internal state of the repository through indicators and checks
> -
>
> Key: OAK-3693
> URL: https://issues.apache.org/jira/browse/OAK-3693
> Project: Jackrabbit Oak
>  Issue Type: Epic
>Reporter: Valentin Olteanu
>  Labels: production
> Fix For: 1.4
>
>
> This container groups all the issues related to areas where we could improve 
> the monitoring of an OAK repository. This can be achieved by exposing 
> different indicators of the internal state and adding checks for certain 
> properties.
> Areas to improve:
> * Async Indexing
> * Revision GC



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


[jira] [Updated] (OAK-3693) Expose the internal state of the repository through indicators and checks

2015-11-30 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu updated OAK-3693:
--
Description: 
This container groups all the issues related to areas where we could improve 
the monitoring of an OAK repository. This can be achieved by exposing different 
indicators of the internal state and adding checks for certain properties.

Areas to improve:
* Async Indexing
* Revision GC
* Topology changes
* Workflows
* Replication



  was:
This container groups all the issues related to areas where we could improve 
the monitoring of an OAK repository. This can be achieved by exposing different 
indicators of the internal state and adding checks for certain properties.

Areas to improve:
* Async Indexing
* Revision GC
* Topology changes



> Expose the internal state of the repository through indicators and checks
> -
>
> Key: OAK-3693
> URL: https://issues.apache.org/jira/browse/OAK-3693
> Project: Jackrabbit Oak
>  Issue Type: Epic
>Reporter: Valentin Olteanu
>
> This container groups all the issues related to areas where we could improve 
> the monitoring of an OAK repository. This can be achieved by exposing 
> different indicators of the internal state and adding checks for certain 
> properties.
> Areas to improve:
> * Async Indexing
> * Revision GC
> * Topology changes
> * Workflows
> * Replication



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


[jira] [Created] (OAK-3506) Uniformization of compaction log messages

2015-10-12 Thread Valentin Olteanu (JIRA)
Valentin Olteanu created OAK-3506:
-

 Summary: Uniformization of compaction log messages
 Key: OAK-3506
 URL: https://issues.apache.org/jira/browse/OAK-3506
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Reporter: Valentin Olteanu


The logs generated during different phases of tar garbage collection 
(compaction) are currently quite heterogenous and difficult to grep/parse.

I propose with the attached patch to uniformize these logs, changing the 
following:
# all logs start with the prefix {{TarMK GargabeCollection \{\}#:}}
# different phases of garbage collection are easier to identify by the first 
word after prefix, e.g. estimation, compaction, cleanup
# all values are also printed in a standard unit, with the following format: 
{{ ()}}. This makes extraction of 
information much easier.
# messages corresponding to the same cycle (run) can be grouped by including 
the runId in the prefix.

Note1: I don't have enough visibility, but the changes might impact any system 
relying on the old format. Yet, I've seen they have changed before so this 
might not be a real concern.

Note2: the runId is implemented as a static variable, which is reset every time 
the class is reloaded (e.g. at restart), so it is unique only during one run.

Below you can find an excerpt of old logs and new logs to compare:

NEW:
{code}
12.10.2015 16:11:56.705 *INFO* [TarMK compaction thread 
[/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
 active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
GarbageCollection #1: started
12.10.2015 16:11:56.707 *INFO* [TarMK compaction thread 
[/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
 active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
GarbageCollection #1: estimation started
12.10.2015 16:11:59.275 *INFO* [TarMK compaction thread 
[/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
 active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
GarbageCollection #1: estimation completed in 2.569 s (2567 ms). Gain is 16% or 
1.1 GB/1.3 GB (1062364160/1269737472 bytes), so running compaction
12.10.2015 16:11:59.275 *INFO* [TarMK compaction thread 
[/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
 active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
GarbageCollection #1: compaction started, 
strategy=CompactionStrategy{paused=false, cloneBinaries=false, 
cleanupType=CLEAN_OLD, olderThan=3600, memoryThreshold=5, 
persistedCompactionMap=true, retryCount=5, forceAfterFail=true, 
compactionStart=1444659116706, offlineCompaction=false}
12.10.2015 16:12:05.839 *INFO* [TarMK compaction thread 
[/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
 active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
org.apache.jackrabbit.oak.plugins.segment.Compactor Finished compaction: 420022 
nodes, 772259 properties, 20544 binaries.
12.10.2015 16:12:07.459 *INFO* [TarMK compaction thread 
[/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
 active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
GarbageCollection #1: compaction completed in 8.184 s (8183 ms), after 0 cycles
12.10.2015 16:12:11.912 *INFO* [TarMK flush thread 
[/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
 active since Mon Oct 12 16:12:11 CEST 2015, previous max duration 10ms] 
org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
GarbageCollection #1: cleanup started. Current repository size is 1.4 GB 
(1368899584 bytes)
12.10.2015 16:12:12.368 *INFO* [TarMK flush thread 
[/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
 active since Mon Oct 12 16:12:11 CEST 2015, previous max duration 10ms] 
org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
GarbageCollection #1: cleanup marking file for deletion: data8a.tar
12.10.2015 16:12:12.434 *INFO* [TarMK flush thread 
[/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
 active since Mon Oct 12 16:12:11 CEST 2015, previous max duration 10ms] 
org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
GarbageCollection #1: cleanup completed in 522.8 ms (522 ms). Post cleanup size 

[jira] [Updated] (OAK-3506) Uniformization of compaction log messages

2015-10-12 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu updated OAK-3506:
--
Attachment: compaction_logs.git.patch

patch to be applied with: patch -p0 -i compaction_logs.git.patch

> Uniformization of compaction log messages
> -
>
> Key: OAK-3506
> URL: https://issues.apache.org/jira/browse/OAK-3506
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core
>Reporter: Valentin Olteanu
> Attachments: compaction_logs.git.patch
>
>
> The logs generated during different phases of tar garbage collection 
> (compaction) are currently quite heterogenous and difficult to grep/parse.
> I propose with the attached patch to uniformize these logs, changing the 
> following:
> # all logs start with the prefix {{TarMK GargabeCollection \{\}#:}}
> # different phases of garbage collection are easier to identify by the first 
> word after prefix, e.g. estimation, compaction, cleanup
> # all values are also printed in a standard unit, with the following format: 
> {{ ()}}. This makes extraction of 
> information much easier.
> # messages corresponding to the same cycle (run) can be grouped by including 
> the runId in the prefix.
> Note1: I don't have enough visibility, but the changes might impact any 
> system relying on the old format. Yet, I've seen they have changed before so 
> this might not be a real concern.
> Note2: the runId is implemented as a static variable, which is reset every 
> time the class is reloaded (e.g. at restart), so it is unique only during one 
> run.
> Below you can find an excerpt of old logs and new logs to compare:
> NEW:
> {code}
> 12.10.2015 16:11:56.705 *INFO* [TarMK compaction thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
> GarbageCollection #1: started
> 12.10.2015 16:11:56.707 *INFO* [TarMK compaction thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
> GarbageCollection #1: estimation started
> 12.10.2015 16:11:59.275 *INFO* [TarMK compaction thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
> GarbageCollection #1: estimation completed in 2.569 s (2567 ms). Gain is 16% 
> or 1.1 GB/1.3 GB (1062364160/1269737472 bytes), so running compaction
> 12.10.2015 16:11:59.275 *INFO* [TarMK compaction thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
> GarbageCollection #1: compaction started, 
> strategy=CompactionStrategy{paused=false, cloneBinaries=false, 
> cleanupType=CLEAN_OLD, olderThan=3600, memoryThreshold=5, 
> persistedCompactionMap=true, retryCount=5, forceAfterFail=true, 
> compactionStart=1444659116706, offlineCompaction=false}
> 12.10.2015 16:12:05.839 *INFO* [TarMK compaction thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
> org.apache.jackrabbit.oak.plugins.segment.Compactor Finished compaction: 
> 420022 nodes, 772259 properties, 20544 binaries.
> 12.10.2015 16:12:07.459 *INFO* [TarMK compaction thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
> GarbageCollection #1: compaction completed in 8.184 s (8183 ms), after 0 
> cycles
> 12.10.2015 16:12:11.912 *INFO* [TarMK flush thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:12:11 CEST 2015, previous max duration 10ms] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
> GarbageCollection #1: cleanup started. Current repository size is 1.4 GB 
> (1368899584 bytes)
> 12.10.2015 16:12:12.368 *INFO* [TarMK flush thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:12:11 CEST 2015, previous max duration 10ms] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore 

[jira] [Commented] (OAK-3506) Uniformization of compaction log messages

2015-10-12 Thread Valentin Olteanu (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-3506?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14953208#comment-14953208
 ] 

Valentin Olteanu commented on OAK-3506:
---

/cc [~alex.parvulescu], [~mduerig], [~frm] could you please have a look and 
tell if this is a good idea?

> Uniformization of compaction log messages
> -
>
> Key: OAK-3506
> URL: https://issues.apache.org/jira/browse/OAK-3506
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core
>Reporter: Valentin Olteanu
> Attachments: compaction_logs.git.patch
>
>
> The logs generated during different phases of tar garbage collection 
> (compaction) are currently quite heterogenous and difficult to grep/parse.
> I propose with the attached patch to uniformize these logs, changing the 
> following:
> # all logs start with the prefix {{TarMK GargabeCollection \{\}#:}}
> # different phases of garbage collection are easier to identify by the first 
> word after prefix, e.g. estimation, compaction, cleanup
> # all values are also printed in a standard unit, with the following format: 
> {{ ()}}. This makes extraction of 
> information much easier.
> # messages corresponding to the same cycle (run) can be grouped by including 
> the runId in the prefix.
> Note1: I don't have enough visibility, but the changes might impact any 
> system relying on the old format. Yet, I've seen they have changed before so 
> this might not be a real concern.
> Note2: the runId is implemented as a static variable, which is reset every 
> time the class is reloaded (e.g. at restart), so it is unique only during one 
> run.
> Below you can find an excerpt of old logs and new logs to compare:
> NEW:
> {code}
> 12.10.2015 16:11:56.705 *INFO* [TarMK compaction thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
> GarbageCollection #1: started
> 12.10.2015 16:11:56.707 *INFO* [TarMK compaction thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
> GarbageCollection #1: estimation started
> 12.10.2015 16:11:59.275 *INFO* [TarMK compaction thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
> GarbageCollection #1: estimation completed in 2.569 s (2567 ms). Gain is 16% 
> or 1.1 GB/1.3 GB (1062364160/1269737472 bytes), so running compaction
> 12.10.2015 16:11:59.275 *INFO* [TarMK compaction thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
> GarbageCollection #1: compaction started, 
> strategy=CompactionStrategy{paused=false, cloneBinaries=false, 
> cleanupType=CLEAN_OLD, olderThan=3600, memoryThreshold=5, 
> persistedCompactionMap=true, retryCount=5, forceAfterFail=true, 
> compactionStart=1444659116706, offlineCompaction=false}
> 12.10.2015 16:12:05.839 *INFO* [TarMK compaction thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
> org.apache.jackrabbit.oak.plugins.segment.Compactor Finished compaction: 
> 420022 nodes, 772259 properties, 20544 binaries.
> 12.10.2015 16:12:07.459 *INFO* [TarMK compaction thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:11:56 CEST 2015, previous max duration 0ms] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
> GarbageCollection #1: compaction completed in 8.184 s (8183 ms), after 0 
> cycles
> 12.10.2015 16:12:11.912 *INFO* [TarMK flush thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:12:11 CEST 2015, previous max duration 10ms] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK 
> GarbageCollection #1: cleanup started. Current repository size is 1.4 GB 
> (1368899584 bytes)
> 12.10.2015 16:12:12.368 *INFO* [TarMK flush thread 
> [/Users/volteanu/workspace/test/qp/quickstart-author-4502/crx-quickstart/repository/segmentstore],
>  active since Mon Oct 12 16:12:11 CEST 2015, previous max duration 10ms] 
> 

[jira] [Commented] (OAK-3273) ColdStandby JMX Status

2015-08-24 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu commented on OAK-3273:
---

[~alex.parvulescu], could you please take a look and review the patch I've 
created for this issue?

 ColdStandby JMX Status 
 ---

 Key: OAK-3273
 URL: https://issues.apache.org/jira/browse/OAK-3273
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: tarmk-standby
Reporter: Valentin Olteanu
Priority: Minor
 Attachments: OAK-3273.patch


 OAK-3113 introduced two fields in the ColdStandby MBean: SyncStartTimestamp 
 and SyncEndTimestamp. This is much more useful than the old 
 SecondsSinceLastSuccess, yet, there are situations in which it's hard to 
 interpret them since they are updated independently:
  - it's impossible to correlate the start with the end
  - in case of fail, the start still reflects the failed cycle
 It would be even better if the two would be updated atomically, to reflect 
 the start and end of the last successful cycle. 



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


[jira] [Updated] (OAK-3273) ColdStandby JMX Status

2015-08-24 Thread Valentin Olteanu (JIRA)

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

Valentin Olteanu updated OAK-3273:
--
Attachment: OAK-3273.patch

 ColdStandby JMX Status 
 ---

 Key: OAK-3273
 URL: https://issues.apache.org/jira/browse/OAK-3273
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: tarmk-standby
Reporter: Valentin Olteanu
Priority: Minor
 Attachments: OAK-3273.patch


 OAK-3113 introduced two fields in the ColdStandby MBean: SyncStartTimestamp 
 and SyncEndTimestamp. This is much more useful than the old 
 SecondsSinceLastSuccess, yet, there are situations in which it's hard to 
 interpret them since they are updated independently:
  - it's impossible to correlate the start with the end
  - in case of fail, the start still reflects the failed cycle
 It would be even better if the two would be updated atomically, to reflect 
 the start and end of the last successful cycle. 



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


[jira] [Created] (OAK-3273) ColdStandby JMX Status

2015-08-24 Thread Valentin Olteanu (JIRA)
Valentin Olteanu created OAK-3273:
-

 Summary: ColdStandby JMX Status 
 Key: OAK-3273
 URL: https://issues.apache.org/jira/browse/OAK-3273
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: tarmk-standby
Reporter: Valentin Olteanu
Priority: Minor


OAK-3113 introduced two fields in the ColdStandby MBean: SyncStartTimestamp and 
SyncEndTimestamp. This is much more useful than the old 
SecondsSinceLastSuccess, yet, there are situations in which it's hard to 
interpret them since they are updated independently:
 - it's impossible to correlate the start with the end
 - in case of fail, the start still reflects the failed cycle

It would be even better if the two would be updated atomically, to reflect the 
start and end of the last successful cycle. 




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