Author: jleroux
Date: Tue Jun  6 13:59:29 2017
New Revision: 1797788

URL: http://svn.apache.org/viewvc?rev=1797788&view=rev
Log:
Improved: performFindResults.listIt closed but not in case of exception in 3 
Scrum Groovy files
(OFBIZ-9389)

This is an improvement only because no cases were reported. But obviously in 
case of unlucky exception after the call to the performFind service, and before 
it's closed, the EntityListIterator remains in memory.

The solution is to use a try-catch-finally block because Groovy has not 
try-with-ressources.

Modified:
    ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/AddProductBacklogItem.groovy
    ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/ListScrumResource.groovy
    ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/ListTimeSheets.groovy

Modified: 
ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/AddProductBacklogItem.groovy
URL: 
http://svn.apache.org/viewvc/ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/AddProductBacklogItem.groovy?rev=1797788&r1=1797787&r2=1797788&view=diff
==============================================================================
--- ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/AddProductBacklogItem.groovy 
(original)
+++ ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/AddProductBacklogItem.groovy 
Tue Jun  6 13:59:29 2017
@@ -38,8 +38,19 @@ if(parameters.statusId == null){
 inputFields.putAll(parameters)
 inputFields.custRequestTypeId = "RF_PROD_BACKLOG"
 def performFindResults = runService('performFind', ["entityName": 
"CustRequestAndCustRequestItem", "inputFields": inputFields, "orderBy": 
"custSequenceNum"])
-def custRequestAndItems = performFindResults.listIt.getCompleteList()
-performFindResults.listIt.close()
+try {
+    def custRequestAndItems = performFindResults.listIt.getCompleteList()
+} catch (GenericEntityException e) {
+    Debug.logError(e, "Failure in " + module)
+} finally {
+    if (performFindResults.listIt != null) {
+        try {
+            performFindResults.listIt.close()
+            } catch (GenericEntityException e) {
+                Debug.logError(e, module);
+            }
+    }
+}
 
 // prepare cust request item list [cust request and item Map]
 def countSequence = 1

Modified: ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/ListScrumResource.groovy
URL: 
http://svn.apache.org/viewvc/ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/ListScrumResource.groovy?rev=1797788&r1=1797787&r2=1797788&view=diff
==============================================================================
--- ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/ListScrumResource.groovy 
(original)
+++ ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/ListScrumResource.groovy Tue 
Jun  6 13:59:29 2017
@@ -37,11 +37,23 @@ performFindInMap.noConditionFind = "Y"
 performFindInMap.inputFields = inputFields
 performFindInMap.orderBy = parameters.sortField
 if (parameters.sortField) {
-       performFindInMap.orderBy = "lastName"
+    performFindInMap.orderBy = "lastName"
 }
 performFindResults = runService('performFind', performFindInMap)
-resultList = performFindResults.listIt.getCompleteList()
-performFindResults.listIt.close()
+try {
+    resultList = performFindResults.listIt.getCompleteList()
+} catch (GenericEntityException e) {
+    Debug.logError(e, "Failure in " + module)
+} finally {
+    if (performFindResults.listIt != null) {
+        try {
+            performFindResults.listIt.close()
+            } catch (GenericEntityException e) {
+                Debug.logError(e, module);
+            }
+    }
+}
+
 
 resultList.each() { result ->
     if (!"N".equals(result.enabled)) {

Modified: ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/ListTimeSheets.groovy
URL: 
http://svn.apache.org/viewvc/ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/ListTimeSheets.groovy?rev=1797788&r1=1797787&r2=1797788&view=diff
==============================================================================
--- ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/ListTimeSheets.groovy 
(original)
+++ ofbiz/ofbiz-plugins/trunk/scrum/groovyScripts/ListTimeSheets.groovy Tue Jun 
 6 13:59:29 2017
@@ -24,6 +24,7 @@ import org.apache.ofbiz.base.util.Debug
 import org.apache.ofbiz.base.util.UtilDateTime
 
 // get all timesheets of all user, including the planned hours
+module ="ListTimeSheets.groovy"
 timesheets = []
 inputFields = [:]
 
@@ -33,8 +34,19 @@ if (!parameters.noConditionFind) {
 inputFields.putAll(parameters)
 performFindResults = runService('performFind', ["entityName": "Timesheet", 
"inputFields": inputFields, "orderBy": "fromDate DESC"])
 if (performFindResults.listSize > 0) {
-    timesheetsDb = performFindResults.listIt.getCompleteList()
-    performFindResults.listIt.close()
+    try {
+        timesheetsDb = performFindResults.listIt.getCompleteList()
+    } catch (GenericEntityException e) {
+        Debug.logError(e, "Failure in " + module)
+    } finally {
+        if (performFindResults.listIt != null) {
+            try {
+                performFindResults.listIt.close()
+                } catch (GenericEntityException e) {
+                    Debug.logError(e, module);
+                }
+        }
+    }
     
     timesheetsDb.each { timesheetDb ->
         //get hours from EmplLeave


Reply via email to