svn commit: r1729125 - /db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/LargeSelect.java

2016-02-08 Thread tv
Author: tv
Date: Mon Feb  8 10:25:41 2016
New Revision: 1729125

URL: http://svn.apache.org/viewvc?rev=1729125&view=rev
Log:
Use CopyOnWriteArrayList to avoid synchronization

Modified:

db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/LargeSelect.java

Modified: 
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/LargeSelect.java
URL: 
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/LargeSelect.java?rev=1729125&r1=1729124&r2=1729125&view=diff
==
--- 
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/LargeSelect.java
 (original)
+++ 
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/LargeSelect.java
 Mon Feb  8 10:25:41 2016
@@ -29,6 +29,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -511,11 +512,7 @@ public class LargeSelect implements R
 
 List returnResults;
 
-synchronized (results)
-{
-returnResults = new ArrayList(
-results.subList(fromIndex, toIndex));
-}
+returnResults = new ArrayList(results.subList(fromIndex, toIndex));
 
 position = start + size;
 lastResults = returnResults;
@@ -533,8 +530,7 @@ public class LargeSelect implements R
 
 try
 {
-// Add 1 to memory limit to check if the query ends on a page 
break.
-results = new ArrayList(memoryLimit + 1);
+results = new CopyOnWriteArrayList();
 
 criteria.setOffset(blockBegin);
 // Add 1 to memory limit to check if the query ends on a
@@ -586,27 +582,25 @@ public class LargeSelect implements R
 allRecordsRetrieved = true;
 }
 
+boolean perhapsLastPage = true;
+int resultSetSize = tempResults.size();
+
+// If the extra record was indeed found then we know we are not
+// on the last page but we must now get rid of it.
+if (tempResults.size() == memoryLimit + 1)
+{
+results.addAll(tempResults.subList(0, memoryLimit));
+resultSetSize--;
+perhapsLastPage = false;
+}
+else
+{
+results.addAll(tempResults);
+}
+
 synchronized (this)
 {
-synchronized (results)
-{
-results.addAll(tempResults);
-}
-
-currentlyFilledTo += tempResults.size();
-
-boolean perhapsLastPage = true;
-
-// If the extra record was indeed found then we know we 
are not
-// on the last page but we must now get rid of it.
-if (results.size() == memoryLimit + 1)
-{
-synchronized (results)
-{
-results.remove(currentlyFilledTo--);
-}
-perhapsLastPage = false;
-}
+currentlyFilledTo += resultSetSize;
 
 if (results.size() > 0
 && blockBegin + currentlyFilledTo >= totalRecords)



-
To unsubscribe, e-mail: torque-dev-unsubscr...@db.apache.org
For additional commands, e-mail: torque-dev-h...@db.apache.org



[jira] [Created] (TORQUE-342) XXXPeer.addSelectColumns() is declared to throw TorqueException for no apparent reason

2016-02-08 Thread Thomas Vandahl (JIRA)
Thomas Vandahl created TORQUE-342:
-

 Summary: XXXPeer.addSelectColumns() is declared to throw 
TorqueException for no apparent reason
 Key: TORQUE-342
 URL: https://issues.apache.org/jira/browse/TORQUE-342
 Project: Torque
  Issue Type: Improvement
  Components: Templates
Affects Versions: 4.0
Reporter: Thomas Vandahl
Priority: Minor
 Fix For: 4.1


For example {{AuthorPeer.addSelectColumns()}} is declared as

{code:java}
public static void addSelectColumns(Criteria criteria)
throws TorqueException
{
getAuthorPeerImpl().addSelectColumns(criteria);
}
{code}

{{getAuthorPeerImpl().addSelectColumns(criteria)}}, however actually calls 
{{BasePeerImpl.addSelectColumns(criteria)}} which does not throw any 
exceptions. Is this a leftover from previous times when the columns were drawn 
from the MapBuilders?





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

-
To unsubscribe, e-mail: torque-dev-unsubscr...@db.apache.org
For additional commands, e-mail: torque-dev-h...@db.apache.org