[jira] [Created] (ACE-494) When the lowest ID in a LogStore is set, in some cases ranges are returned that don't take that into account.

2014-11-14 Thread Marcel Offermans (JIRA)
Marcel Offermans created ACE-494:


 Summary: When the lowest ID in a LogStore is set, in some cases 
ranges are returned that don't take that into account.
 Key: ACE-494
 URL: https://issues.apache.org/jira/browse/ACE-494
 Project: ACE
  Issue Type: Bug
  Components: Log
Reporter: Marcel Offermans
Assignee: Marcel Offermans


When the lowest ID in a LogStore is set, in some cases ranges are returned that 
don't take that into account. For example, if you had 1-20 in the store, and 
then set the lowest ID to 20, you should end up with just 20 (and when you 
fetch the events that is indeed what you get) but the range returned still 
reports 1-20.



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


svn commit: r1639598 - in /ace/trunk/org.apache.ace.log: src/org/apache/ace/log/server/store/impl/LogStoreImpl.java test/org/apache/ace/log/server/store/impl/ServerLogStoreTester.java

2014-11-14 Thread marrs
Author: marrs
Date: Fri Nov 14 10:43:06 2014
New Revision: 1639598

URL: http://svn.apache.org/r1639598
Log:
ACE-494 Fixed and added a test.

Modified:

ace/trunk/org.apache.ace.log/src/org/apache/ace/log/server/store/impl/LogStoreImpl.java

ace/trunk/org.apache.ace.log/test/org/apache/ace/log/server/store/impl/ServerLogStoreTester.java

Modified: 
ace/trunk/org.apache.ace.log/src/org/apache/ace/log/server/store/impl/LogStoreImpl.java
URL: 
http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.log/src/org/apache/ace/log/server/store/impl/LogStoreImpl.java?rev=1639598&r1=1639597&r2=1639598&view=diff
==
--- 
ace/trunk/org.apache.ace.log/src/org/apache/ace/log/server/store/impl/LogStoreImpl.java
 (original)
+++ 
ace/trunk/org.apache.ace.log/src/org/apache/ace/log/server/store/impl/LogStoreImpl.java
 Fri Nov 14 10:43:06 2014
@@ -112,16 +112,20 @@ public class LogStoreImpl implements Log
 in = new BufferedReader(new FileReader(log));
 String file = log.getAbsolutePath();
 long counter = 0;
+long lowestID = getLowestIDInternal(descriptor.getTargetID(), 
descriptor.getStoreID());
 for (String line = in.readLine(); line != null; line = 
in.readLine()) {
 Event event = new Event(line);
 long id = event.getID();
-if ((counter != -1) && ++counter == id) {
-
+if (id < lowestID) {
+   continue;
 }
-else {
+if (lowestID > 0 && id == lowestID) {
+   counter = lowestID - 1;
+}
+if ((counter == -1) || ++counter != id) {
 counter = -1;
 }
-if (set.contains(id) && id >= 
getLowestIDInternal(descriptor.getTargetID(), descriptor.getStoreID())) {
+   if (set.contains(id)) {
 result.add(event);
 }
 }
@@ -155,9 +159,16 @@ public class LogStoreImpl implements Log
 
 private Descriptor getDescriptorInternal(String targetID, long logID, 
boolean lock) throws IOException {
 Long high = m_fileToHighestID.get(getLogFile(targetID, 
logID).getAbsolutePath());
+long lowestID = getLowestIDInternal(targetID, logID);
 if (high != null) {
-Range r = new Range(1, high);
-return new Descriptor(targetID, logID, new 
SortedRangeSet(r.toRepresentation()));
+long low = lowestID > 0 ? lowestID : 1;
+if (low > high) {
+return new Descriptor(targetID, logID, new SortedRangeSet(""));
+}
+else {
+   Range r = new Range(low, high);
+   return new Descriptor(targetID, logID, new 
SortedRangeSet(r.toRepresentation()));
+}
 }
 Descriptor descriptor = new Descriptor(targetID, logID, 
SortedRangeSet.FULL_SET);
List events = lock ? get(descriptor) : 
getInternal(descriptor);

Modified: 
ace/trunk/org.apache.ace.log/test/org/apache/ace/log/server/store/impl/ServerLogStoreTester.java
URL: 
http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.log/test/org/apache/ace/log/server/store/impl/ServerLogStoreTester.java?rev=1639598&r1=1639597&r2=1639598&view=diff
==
--- 
ace/trunk/org.apache.ace.log/test/org/apache/ace/log/server/store/impl/ServerLogStoreTester.java
 (original)
+++ 
ace/trunk/org.apache.ace.log/test/org/apache/ace/log/server/store/impl/ServerLogStoreTester.java
 Fri Nov 14 10:43:06 2014
@@ -164,19 +164,30 @@ public class ServerLogStoreTester {
 assert 0 == m_logStore.getLowestID("target", 0) : "Lowest ID should be 
0 by default, not: " + m_logStore.getLowestID("target", 1);
 assert 0 == m_logStore.getLowestID("target2", 1) : "Lowest ID should 
be 0 by default, not: " + m_logStore.getLowestID("target", 1);
 
-for (long id = 0; id < 20; id++) {
+for (long id = 1; id <= 20; id++) {
 events.add(new Event("target", 1, id, System.currentTimeMillis(), 
AuditEvent.FRAMEWORK_STARTED, props));
 }
 m_logStore.put(events);
-assert m_logStore.getDescriptors().size() == 1 : "Incorrect amount of 
ranges returned from store";
+List descriptors = m_logStore.getDescriptors();
+assert descriptors.size() == 1 : "Incorrect amount of ranges returned 
from store";
+String range = descriptors.get(0).getRangeSet().toRepresentation();
+assert range.equals("10-20") : "Incorrect range in descriptor: " + 
range;
 List stored = getStoredEvents();
-assert stored.size() == 10 : "Exactly 10 events should have been 
stored";
-m_logStore.setLowestID("target", 1, 19);
+assert stored.size() == 11 : "Exactly 11 events should have been 
stored";
+

[jira] [Resolved] (ACE-494) When the lowest ID in a LogStore is set, in some cases ranges are returned that don't take that into account.

2014-11-14 Thread Marcel Offermans (JIRA)

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

Marcel Offermans resolved ACE-494.
--
Resolution: Fixed

Committed a fix and a test. Should be okay now.

> When the lowest ID in a LogStore is set, in some cases ranges are returned 
> that don't take that into account.
> -
>
> Key: ACE-494
> URL: https://issues.apache.org/jira/browse/ACE-494
> Project: ACE
>  Issue Type: Bug
>  Components: Log
>Reporter: Marcel Offermans
>Assignee: Marcel Offermans
>
> When the lowest ID in a LogStore is set, in some cases ranges are returned 
> that don't take that into account. For example, if you had 1-20 in the store, 
> and then set the lowest ID to 20, you should end up with just 20 (and when 
> you fetch the events that is indeed what you get) but the range returned 
> still reports 1-20.



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