|
From: <ian...@us...> - 2008-02-28 02:04:30
|
Revision: 781
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=781&view=rev
Author: iansmith
Date: 2008-02-27 18:04:33 -0800 (Wed, 27 Feb 2008)
Log Message:
-----------
Some small changes to hopefully detect failed space starts more quickly. The new subtype
of PersistException explicitly demarcates this failure.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/UnableToAssignSimException.java
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java 2008-02-27 23:10:25 UTC (rev 780)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java 2008-02-28 02:04:33 UTC (rev 781)
@@ -209,6 +209,7 @@
HttpURLConnection connection = (HttpURLConnection) simURI.toURL().openConnection();
connection.setRequestMethod("GET");
connection.setAllowUserInteraction(false);
+ connection.setConnectTimeout(2000);
connection.setReadTimeout(3000);
if (connection.getResponseCode()!=200) {
Log.warn("Can't get a connection to "+simURI+"! Marking inactive!");
@@ -238,7 +239,7 @@
}
SimRecord[] assignable=findAllReachableAndNotRetiredSims(spaceRecord, sessionFactory);
if (assignable.length==0) {
- throw new PersistException("Unable to find any sims that we can assign to!");
+ throw new UnableToAssignSimException("Unable to find any sims that we can assign to!");
}
//has it been a while?
long now=System.currentTimeMillis();
@@ -252,7 +253,7 @@
assignable=findAllReachableAndNotRetiredSims(spaceRecord, sessionFactory);
if (assignable.length==0) {
- throw new PersistException("Unable to find any reachable sims (after doing a check)!");
+ throw new UnableToAssignSimException("Unable to find any reachable sims (after doing a check)!");
}
return pickSimRandomly(spaceRecord, sessionFactory, assignable);
}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/UnableToAssignSimException.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/UnableToAssignSimException.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/UnableToAssignSimException.java 2008-02-28 02:04:33 UTC (rev 781)
@@ -0,0 +1,13 @@
+package com.ogoglio.persist;
+
+import com.ogoglio.appdev.persist.PersistException;
+
+public class UnableToAssignSimException extends PersistException {
+ public UnableToAssignSimException(String msg) {
+ super(msg);
+ }
+ public UnableToAssignSimException(String msg, Exception e) {
+ super(msg);
+ innerThrowable=e;
+ }
+}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2008-02-27 23:10:25 UTC (rev 780)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2008-02-28 02:04:33 UTC (rev 781)
@@ -43,6 +43,7 @@
import com.ogoglio.persist.SimRecord;
import com.ogoglio.persist.SpacePersistTasks;
import com.ogoglio.persist.SpaceRecord;
+import com.ogoglio.persist.UnableToAssignSimException;
import com.ogoglio.sim.Sim;
import com.ogoglio.sim.SpaceSimulator;
import com.ogoglio.sim.script.ScriptContextFactory;
@@ -491,6 +492,10 @@
}
sendStringResponse(list.toString(), "text/xml", response);
+ } catch (UnableToAssignSimException e) {
+ Log.error("Unable to assign sim trying to get list of things (often triggered by space duplication):"+e);
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ return;
} catch (PersistException e) {
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2008-02-27 23:10:25 UTC (rev 780)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2008-02-28 02:04:33 UTC (rev 781)
@@ -59,6 +59,7 @@
import com.ogoglio.persist.SpaceRecord;
import com.ogoglio.persist.TemplatePersistTasks;
import com.ogoglio.persist.TemplateRecord;
+import com.ogoglio.persist.UnableToAssignSimException;
import com.ogoglio.sim.Sim;
import com.ogoglio.util.Log;
import com.ogoglio.util.StreamUtils;
@@ -441,6 +442,12 @@
Map validationMap = createEmailValidationMap(validationRecord.getEmail(), validationURL, "Ogoglio", getHostPortionOfURLForExternalUse());
String body = mailFormatter.format(validationMap, getTemplate(EMAIL_VALIDATION_TEMPLATE));
+ MailClient mailClient = getInitializedMailClient();
+ mailClient.sendEmail(validationRecord.getEmail(), from, "validate request", body);
+ Log.info("Sent validation email to " + validationRecord.getEmail());
+ }
+
+ private MailClient getInitializedMailClient() {
MailClient mailClient = null;
File mailDir = getSiteInfo().getMailDirectory() ;
if (mailDir == null) {
@@ -448,9 +455,19 @@
} else {
mailClient = new MailClient(mailDir);
}
- mailClient.sendEmail(validationRecord.getEmail(), from, "validate request", body);
- Log.info("Sent validation email to " + validationRecord.getEmail());
+ return mailClient;
}
+
+ private void handleCriticalException(Exception e) {
+ String from = "dont-reply@" + getDomainForExternalUse();
+ String to = "critical@" + getDomainForExternalUse();
+ MailClient mailClient = getInitializedMailClient();
+// try {
+// mailClient.sendEmail(to, from, "criticial exception", e.toString());
+// } catch (MailSendException ex) {
+// Log.error("Unable to send email about critical exception:"+e);
+// }
+ }
public static String getTemplate(String templateName) {
try {
@@ -893,13 +910,18 @@
if (record.getSpaceID() != -1) {
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(record.getSpaceID(), getSessionFactory());
if (spaceRecord != null) {
- SimRecord simRecord = SpacePersistTasks.findOrAssignSim(spaceRecord, getSessionFactory());
- if (simRecord != null) {
- URI thingURI = WebAPIUtil.appendToURI(simRecord.getSimURI(), "space/" + record.getSpaceID() + "/thing/" + record.getThingID());
- if (!new WebAPIClientWire().sendDelete(thingURI, null)) {
- response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- return;
+ try {
+ SimRecord simRecord = SpacePersistTasks.findOrAssignSim(spaceRecord, getSessionFactory());
+ if (simRecord != null) {
+ URI thingURI = WebAPIUtil.appendToURI(simRecord.getSimURI(), "space/" + record.getSpaceID() + "/thing/" + record.getThingID());
+ if (!new WebAPIClientWire().sendDelete(thingURI, null)) {
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ return;
+ }
}
+ } catch (UnableToAssignSimException e) {
+ Log.error("Unable to find or assign sim! Space="+spaceRecord.getSpaceID()+"!");
+ throw e;
}
}
}
@@ -943,13 +965,18 @@
if (oldSpaceID != PossessionDocument.NO_SPACE) {
SpaceRecord oldSpaceRecord = SpacePersistTasks.findSpaceBySpaceID(oldSpaceID, getSessionFactory());
if (oldSpaceRecord != null) {
- SimRecord simRecord = SpacePersistTasks.findOrAssignSim(oldSpaceRecord, getSessionFactory());
- if (simRecord != null) {
- URI thingURI = WebAPIUtil.appendToURI(simRecord.getSimURI(), "space/" + oldSpaceID + "/thing/" + oldThingID);
- if (!new WebAPIClientWire().sendDelete(thingURI, null)) {
- response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- return;
+ try {
+ SimRecord simRecord = SpacePersistTasks.findOrAssignSim(oldSpaceRecord, getSessionFactory());
+ if (simRecord != null) {
+ URI thingURI = WebAPIUtil.appendToURI(simRecord.getSimURI(), "space/" + oldSpaceID + "/thing/" + oldThingID);
+ if (!new WebAPIClientWire().sendDelete(thingURI, null)) {
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ return;
+ }
}
+ } catch (UnableToAssignSimException e) {
+ handleCriticalException(e);
+ throw e;
}
}
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2008-02-27 23:10:25 UTC (rev 780)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2008-02-28 02:04:33 UTC (rev 781)
@@ -885,14 +885,14 @@
}
SimRecord[] simRecs = SimPersistTasks.findSims(getSessionFactory());
- Log.debug("Found a list of sims in BaseSimResource, length is " + simRecs.length);
+ //Log.debug("Found a list of sims in BaseSimResource, length is " + simRecs.length);
XMLElement list = new XMLElement("list");
for (int i = 0; i < simRecs.length; i++) {
SimDocument simDoc = DocumentFactory.documentFromRecord(simRecs[i]);
if ((simDoc.isReachable()) && (!onlyServers)) {
try {
URI uri = WebAPIUtil.appendToURI(simDoc.getSimURI(), "space/");
- Log.debug("About to poll " + uri + " to see about it's space list...");
+ //Log.debug("About to poll " + uri + " to see about it's space list...");
WebAPIClientWire wire = new WebAPIClientWire();
wire.setConnectTimeout(2000);
wire.setReadTimeout(2000);
@@ -919,7 +919,7 @@
}
list.addChild(simDoc.toElement());
}
- Log.info("Requested list of sims:"+list.toString());
+ //Log.info("Requested list of sims:"+list.toString());
this.sendStringResponse(list.toString(), "text/xml", response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response, String[] pathElements, AccountRecord authedAccount) throws PersistException, ServletException, IOException {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|