Skip to content

Commit 74e1578

Browse files
authored
Merge pull request #1388 from WildMeOrg/minor-bot-query-closing-improvements
Minor query closing enhancements
2 parents 960a511 + cc245ca commit 74e1578

File tree

4 files changed

+90
-54
lines changed

4 files changed

+90
-54
lines changed

src/main/java/org/ecocean/AcmIdBot.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ public static void fixAcmIds(String context) {
132132
myShepherd.setAction("AcmIdBot.java");
133133
myShepherd.beginDBTransaction();
134134

135+
Query query2 = null;
136+
Query query3 = null;
135137
try {
136138
System.out.println(
137139
"Looking for complete import tasks with media assets with missing acmIds");
@@ -140,11 +142,12 @@ public static void fixAcmIds(String context) {
140142
int maxFixes = 500;
141143
String filter2 =
142144
"select from org.ecocean.media.Feature where itask.status == 'complete' && itask.encounters.contains(enc) && enc.annotations.contains(annot) && annot.features.contains(this) && asset.acmId == null VARIABLES org.ecocean.Encounter enc;org.ecocean.servlet.importer.ImportTask itask;org.ecocean.Annotation annot";
143-
Query query2 = myShepherd.getPM().newQuery(filter2);
145+
query2 = myShepherd.getPM().newQuery(filter2);
144146
query2.setOrdering("revision desc");
145147
Collection c2 = (Collection)(query2.execute());
146148
List<Feature> feats = new ArrayList<Feature>(c2);
147149
query2.closeAll();
150+
query2 = null; // Mark as closed
148151

149152
fixFeats(feats, myShepherd, "ACM ID ImportTask fixing summary", maxFixes);
150153

@@ -158,17 +161,20 @@ public static void fixAcmIds(String context) {
158161
"select from org.ecocean.media.Feature where enc45.dwcDateAddedLong >= " +
159162
twenyFourHoursAgo +
160163
" && enc45.annotations.contains(annot) && annot.features.contains(this) && asset.acmId == null VARIABLES org.ecocean.Encounter enc45;org.ecocean.Annotation annot";
161-
Query query3 = myShepherd.getPM().newQuery(filter3);
164+
query3 = myShepherd.getPM().newQuery(filter3);
162165
query3.setOrdering("revision desc");
163166
Collection c3 = (Collection)(query3.execute());
164167
List<Feature> feats2 = new ArrayList<Feature>(c3);
165168
query3.closeAll();
169+
query3 = null; // Mark as closed
166170

167171
fixFeats(feats2, myShepherd, "Recent Encounter ACM ID Fixing Summary", maxFixes);
168172
} catch (Exception f) {
169173
System.out.println("Exception in AcmIdBot!");
170174
f.printStackTrace();
171175
} finally {
176+
if (query2 != null) query2.closeAll();
177+
if (query3 != null) query3.closeAll();
172178
myShepherd.rollbackAndClose();
173179
}
174180
}

src/main/java/org/ecocean/MetricsBot.java

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,11 @@ public static String buildGauge(String filter, String name, String help, String
109109

110110
myShepherd.setAction("MetricsBot_buildGauge_" + name);
111111
myShepherd.beginDBTransaction();
112+
Query q = null;
112113
try {
113114
Long myValue = null;
114-
Query q = myShepherd.getPM().newQuery(filter);
115+
q = myShepherd.getPM().newQuery(filter);
115116
myValue = (Long)q.execute();
116-
q.closeAll();
117117
if (myValue != null) {
118118
line = name + "," + myValue.toString() + "," + "gauge" + "," + help;
119119
}
@@ -124,6 +124,7 @@ public static String buildGauge(String filter, String name, String help, String
124124
} catch (Exception e) {
125125
e.printStackTrace();
126126
} finally {
127+
if (q != null) q.closeAll();
127128
myShepherd.rollbackAndClose();
128129
}
129130
// System.out.println(" -- Done: "+ line);
@@ -498,16 +499,16 @@ private static void addTasksToCsv(ArrayList<String> csvLines, String context)
498499
String idCompleteFilter =
499500
"SELECT count(this) FROM org.ecocean.ia.Task where completionDateInMilliseconds > "
500501
+ (System.currentTimeMillis() - TwoFourHours);
502+
Query qD = null;
503+
Query qID = null;
501504
try {
502505
Long detectValue = null;
503506
Long idValue = null;
504-
Query qD = myShepherd.getPM().newQuery(detectionsCompleteFilter);
507+
qD = myShepherd.getPM().newQuery(detectionsCompleteFilter);
505508
detectValue = (Long)qD.execute();
506-
qD.closeAll();
507509
if (detectValue != null) numDetectionCompletedLast24 = detectValue.intValue();
508-
Query qID = myShepherd.getPM().newQuery(idCompleteFilter);
510+
qID = myShepherd.getPM().newQuery(idCompleteFilter);
509511
idValue = (Long)qID.execute();
510-
qID.closeAll();
511512
if (idValue != null)
512513
numIDCompletedLast24 = idValue.intValue() - detectValue.intValue();
513514
csvLines.add("wildbook_identification_tasks_completed_last24, " +
@@ -521,6 +522,9 @@ private static void addTasksToCsv(ArrayList<String> csvLines, String context)
521522
badArg.printStackTrace();
522523
} catch (Exception e) {
523524
e.printStackTrace();
525+
} finally {
526+
if (qD != null) qD.closeAll();
527+
if (qID != null) qID.closeAll();
524528
}
525529
IAJsonProperties iaConfig = new IAJsonProperties();
526530
List<Taxonomy> taxes = iaConfig.getAllTaxonomies(myShepherd);
@@ -560,10 +564,14 @@ private static void addTasksToCsv(ArrayList<String> csvLines, String context)
560564
// WB-1968: filter to only users who have logged in
561565
// List<User> users = myShepherd.getAllUsers();
562566
String filterTasksUsers = "SELECT FROM org.ecocean.User where lastLogin > 0";
563-
Query filterTasksUsersQuery = myShepherd.getPM().newQuery(filterTasksUsers);
564-
Collection c = (Collection)filterTasksUsersQuery.execute();
565-
List<User> users = new ArrayList<User>(c);
566-
filterTasksUsersQuery.closeAll();
567+
Query filterTasksUsersQuery = null;
568+
try {
569+
filterTasksUsersQuery = myShepherd.getPM().newQuery(filterTasksUsers);
570+
Collection c = (Collection)filterTasksUsersQuery.execute();
571+
List<User> users = new ArrayList<User>(c);
572+
} finally {
573+
if (filterTasksUsersQuery != null) filterTasksUsersQuery.closeAll();
574+
}
567575
// end WB-1968
568576

569577
} catch (Exception exy) { exy.printStackTrace(); } finally {

src/main/java/org/ecocean/servlet/UserConsolidate.java

Lines changed: 52 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -846,9 +846,11 @@ public static JSONObject consolidateLessCompleteUsersWithTheirMoreCompleteCounte
846846
returnJson.put("conslidatedUsers", consolidatedIncompleteUsers);
847847
} else {
848848
System.out.println("dedupe ack there were no users in this list");
849+
query.closeAll();
849850
returnJson.put("success", true);
850851
return returnJson;
851852
}
853+
query.closeAll();
852854
returnJson.put("success", true);
853855
return returnJson;
854856
}
@@ -1032,10 +1034,13 @@ public static List<User> getUsersByUsername(PersistenceManager persistenceManage
10321034
List<User> users = new ArrayList<User>();
10331035
String filter = "SELECT FROM org.ecocean.User WHERE username == \"" + username + "\"";
10341036
Query query = persistenceManager.newQuery(filter);
1035-
Collection c = (Collection)(query.execute());
1036-
1037-
if (c != null) {
1038-
users = new ArrayList<User>(c);
1037+
try {
1038+
Collection c = (Collection)(query.execute());
1039+
if (c != null) {
1040+
users = new ArrayList<User>(c);
1041+
}
1042+
} finally {
1043+
query.closeAll();
10391044
}
10401045
return users;
10411046
}
@@ -1045,10 +1050,12 @@ public static List<User> getUsersByFullname(PersistenceManager persistenceManage
10451050
List<User> users = new ArrayList<User>();
10461051
String filter = "SELECT FROM org.ecocean.User WHERE fullName == \"" + fullname + "\"";
10471052
Query query = persistenceManager.newQuery(filter);
1048-
Collection c = (Collection)(query.execute());
1049-
1050-
if (c != null) {
1051-
users = new ArrayList<User>(c);
1053+
try {
1054+
Collection c = (Collection)(query.execute());
1055+
if (c != null) {
1056+
users = new ArrayList<User>(c);
1057+
}
1058+
} finally {
10521059
query.closeAll();
10531060
}
10541061
return users;
@@ -1060,10 +1067,12 @@ public static List<User> getUsersByHashedEmailAddress(PersistenceManager persist
10601067
String filter = "SELECT FROM org.ecocean.User WHERE hashedEmailAddress == \"" +
10611068
hashedEmail + "\"";
10621069
Query query = persistenceManager.newQuery(filter);
1063-
Collection c = (Collection)(query.execute());
1064-
1065-
if (c != null) {
1066-
users = new ArrayList<User>(c);
1070+
try {
1071+
Collection c = (Collection)(query.execute());
1072+
if (c != null) {
1073+
users = new ArrayList<User>(c);
1074+
}
1075+
} finally {
10671076
query.closeAll();
10681077
}
10691078
return users;
@@ -1072,48 +1081,54 @@ public static List<User> getUsersByHashedEmailAddress(PersistenceManager persist
10721081
public static List<User> getUsersWithEmailAddress(PersistenceManager persistenceManager,
10731082
String emailAddress) {
10741083
System.out.println("dedupe getUsersWithEmailAddress entered");
1075-
if (emailAddress != null) {
1076-
List<User> users = new ArrayList<User>();
1077-
String filter = "SELECT FROM org.ecocean.User WHERE emailAddress == \"" + emailAddress +
1078-
"\"";
1079-
Query query = persistenceManager.newQuery(filter);
1084+
if (emailAddress == null) {
1085+
System.out.println("dedupe current email address was invalid. Skipping...");
1086+
return null;
1087+
}
1088+
List<User> users = new ArrayList<User>();
1089+
String filter = "SELECT FROM org.ecocean.User WHERE emailAddress == \"" + emailAddress +
1090+
"\"";
1091+
Query query = persistenceManager.newQuery(filter);
1092+
try {
10801093
Collection c = (Collection)(query.execute());
10811094
if (c != null) {
10821095
users = new ArrayList<User>(c);
10831096
}
1084-
if (users.size() > 0) {
1085-
return users;
1086-
} else {
1087-
System.out.println("dedupe ack there were no users");
1088-
return null;
1089-
}
1097+
} finally {
1098+
query.closeAll();
1099+
}
1100+
if (users.size() > 0) {
1101+
return users;
10901102
} else {
1091-
System.out.println("dedupe current email address was invalid. Skipping...");
1103+
System.out.println("dedupe ack there were no users");
10921104
return null;
10931105
}
10941106
}
10951107

10961108
public static User getFirstUserWithEmailAddress(PersistenceManager persistenceManager,
10971109
String emailAddress) {
10981110
System.out.println("dedupe getFirstUserWithEmailAddress entered");
1099-
if (emailAddress != null) {
1100-
// emailAddress = emailAddress.toLowerCase().trim();
1101-
List<User> users = new ArrayList<User>();
1102-
String filter = "SELECT FROM org.ecocean.User WHERE emailAddress == \"" + emailAddress +
1103-
"\"";
1104-
Query query = persistenceManager.newQuery(filter);
1111+
if (emailAddress == null) {
1112+
System.out.println("dedupe current email address was invalid. Skipping...");
1113+
return null;
1114+
}
1115+
// emailAddress = emailAddress.toLowerCase().trim();
1116+
List<User> users = new ArrayList<User>();
1117+
String filter = "SELECT FROM org.ecocean.User WHERE emailAddress == \"" + emailAddress +
1118+
"\"";
1119+
Query query = persistenceManager.newQuery(filter);
1120+
try {
11051121
Collection c = (Collection)(query.execute());
11061122
if (c != null) {
11071123
users = new ArrayList<User>(c);
11081124
}
1109-
if (users.size() > 0) {
1110-
return users.get(0);
1111-
} else {
1112-
System.out.println("dedupe ack there were no users");
1113-
return null;
1114-
}
1125+
} finally {
1126+
query.closeAll();
1127+
}
1128+
if (users.size() > 0) {
1129+
return users.get(0);
11151130
} else {
1116-
System.out.println("dedupe current email address was invalid. Skipping...");
1131+
System.out.println("dedupe ack there were no users");
11171132
return null;
11181133
}
11191134
}

src/main/java/org/ecocean/servlet/export/EncounterSearchExportKML.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import java.io.*;
66
import java.util.*;
77

8+
import javax.jdo.Query;
9+
810
import org.ecocean.*;
911
import org.ecocean.servlet.ServletUtilities;
1012

@@ -65,12 +67,15 @@ public void doPost(HttpServletRequest request, HttpServletResponse response)
6567
myShepherd.setAction("EncounterSearchExportKML.class");
6668
myShepherd.beginDBTransaction();
6769

70+
Query encounterQuery = null;
6871
try {
6972
if (request.getParameter("encounterSearchUse") != null) {
70-
Collection c = (Collection)myShepherd.getPM().newQuery(
71-
"SELECT FROM org.ecocean.Encounter WHERE decimalLatitude != null && decimalLongitude != null")
72-
.execute();
73+
encounterQuery = myShepherd.getPM().newQuery(
74+
"SELECT FROM org.ecocean.Encounter WHERE decimalLatitude != null && decimalLongitude != null");
75+
Collection c = (Collection)encounterQuery.execute();
7376
rEncounters = new Vector(c);
77+
encounterQuery.closeAll();
78+
encounterQuery = null; // Mark as closed
7479
} else {
7580
EncounterQueryResult queryResult = EncounterQueryProcessor.processQuery(myShepherd,
7681
request, "year descending, month descending, day descending");
@@ -231,8 +236,10 @@ public void doPost(HttpServletRequest request, HttpServletResponse response)
231236
out.println(
232237
"<p>Please let the webmaster know you encountered an error at: EncounterSearchExportKML servlet</p></body></html>");
233238
out.println(ServletUtilities.getFooter(context));
239+
} finally {
240+
if (encounterQuery != null) encounterQuery.closeAll();
241+
myShepherd.rollbackDBTransaction();
242+
myShepherd.closeDBTransaction();
234243
}
235-
myShepherd.rollbackDBTransaction();
236-
myShepherd.closeDBTransaction();
237244
}
238245
}

0 commit comments

Comments
 (0)