|
From: <ian...@us...> - 2007-11-26 18:30:22
|
Revision: 603
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=603&view=rev
Author: iansmith
Date: 2007-11-26 10:30:26 -0800 (Mon, 26 Nov 2007)
Log Message:
-----------
Added some Log messages so we have a hope of finding the "empty space bug" in a triumvirate.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometProto.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptHTTPRequest.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/StatusServlet.java
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java 2007-11-24 15:41:41 UTC (rev 602)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java 2007-11-26 18:30:26 UTC (rev 603)
@@ -36,12 +36,14 @@
throw new IllegalArgumentException("Cannot copy a space to itself: " + destinationSpaceID);
}
+ Log.info("DUP:Creating new client:"+destinationSpaceID+","+emptyFirst+", from "+originSpaceID);
WebAPIClient client = new WebAPIClient(descriptor, auth, wire);
if (emptyFirst) {
emptySpace(destinationSpaceID, client);
}
+ Log.info("DUP: Getting space document and setting simple properties");
SpaceDocument spaceDoc1 = client.getSpaceDocument(originSpaceID, false);
SpaceDocument spaceDoc2 = client.getSpaceDocument(destinationSpaceID, false);
@@ -52,7 +54,9 @@
client.setSpacePublished(destinationSpaceID, spaceDoc1.isPublished());
ThingDocument[] thingDocs = client.getThingDocuments(originSpaceID);
+ Log.info("DUP: setting up possessions and things:"+thingDocs.length);
for (int i = 0; i < thingDocs.length; i++) {
+ Log.info("DUP: Setting up thing "+i+":"+thingDocs[i].getDisplayName());
PossessionDocument[] possDocuments = client.getPossessionDocuments();
PossessionDocument possToUse = null;
for (int j = 0; j < possDocuments.length; j++) {
@@ -81,10 +85,12 @@
}
DoorDocument[] doorDocs = client.getDoorDocuments(spaceDoc1.getSpaceID());
+ Log.info("DUP: Setting up doors:"+doorDocs.length);
for (int i = 0; i < doorDocs.length; i++) {
client.createDoor(spaceDoc2.getSpaceID(), doorDocs[i].getTemplateID(), doorDocs[i].getTemplateOwner(), doorDocs[i].getDisplayName(), doorDocs[i].getLink(), doorDocs[i].getTransform());
}
+ Log.info("DUP: copying space settings ");
Map settings = client.getSpaceSettings(spaceDoc1.getSpaceID());
String[] keys = (String[]) settings.keySet().toArray(new String[0]);
for (int i = 0; i < keys.length; i++) {
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2007-11-24 15:41:41 UTC (rev 602)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2007-11-26 18:30:26 UTC (rev 603)
@@ -13,7 +13,6 @@
limitations under the License. */
package com.ogoglio.client;
-import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
@@ -27,6 +26,7 @@
import nanoxml.XMLElement;
import com.ogoglio.util.ArgumentUtils;
+import com.ogoglio.util.Log;
import com.ogoglio.util.StreamUtils;
import com.ogoglio.xml.AccountDocument;
import com.ogoglio.xml.AuthDocument;
@@ -382,6 +382,7 @@
XMLElement list = wire.fetchAuthenticatedXML(descriptor.getThingsURI(spaceID), authenticator.getAuthCookie());
XMLElement[] children = (XMLElement[]) list.getChildren().toArray(new XMLElement[0]);
+ Log.info("CLIENT: Fetched thing document for space "+spaceID+" and found "+children.length+" children");
for (int i = 0; i < children.length; i++) {
results.add(new ThingDocument(children[i]));
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java 2007-11-24 15:41:41 UTC (rev 602)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java 2007-11-26 18:30:26 UTC (rev 603)
@@ -26,6 +26,7 @@
import javax.vecmath.Vector3d;
import com.ogoglio.util.ArgumentUtils;
+import com.ogoglio.util.Log;
public class Space {
@@ -372,6 +373,7 @@
}
public synchronized Thing[] getThings() {
+ Log.info("SPACE: query of things content:"+ things.values().size()+" of space "+spaceID);
return (Thing[]) things.values().toArray(new Thing[0]);
}
@@ -416,6 +418,7 @@
}
public void addThing(Thing thing) {
+ Log.info("Space: adding thing:"+thing.getName()+" to space "+spaceID);
synchronized (this) {
if (thing.getThingID() == -1) {
thing.setThingID(getNewThingID());
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometProto.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometProto.java 2007-11-24 15:41:41 UTC (rev 602)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/message/proto/CometProto.java 2007-11-26 18:30:26 UTC (rev 603)
@@ -105,15 +105,17 @@
} catch (IOException e) {
Log.error("Problem attempting to flush comet proto buffers:" + e.getMessage());
}
- //again, a horrible modularity break: we *know* that needs chunking implies we are on the
- //client side
- if (needsChunking) {
- try {
- Log.info("Closing client-side connection to server since we are shutting down.");
+ }
+ //again, a horrible modularity break: we *know* that needs chunking implies we are on the
+ //client side
+ if (needsChunking) {
+ try {
+ Log.info("Closing client-side connection to server since we are shutting down. ("+(writer==null)+")");
+ if (writer!=null) {
writer.close();
- } catch (IOException e) {
- Log.error("Unable to close connection to server:" + e.getMessage());
}
+ } catch (IOException e) {
+ Log.error("Unable to close connection to server:"+e.getMessage());
}
}
input = null;
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java 2007-11-24 15:41:41 UTC (rev 602)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java 2007-11-26 18:30:26 UTC (rev 603)
@@ -266,20 +266,26 @@
}
public SpaceSimulator getOrCreateSpaceSimulator(SpaceRecord record) {
+ Log.debug("Sim.getOrCreateSpaceSim:"+record.getDisplayName()+","+record.getSpaceID());
synchronized (spaceSimulators) {
SpaceSimulator simulator = (SpaceSimulator) spaceSimulators.getForward(new Long(record.getSpaceID()));
if (simulator != null) {
return simulator;
}
+ Log.debug("Sim.getOrCreateSpaceSim: don't have space doc cached.");
SpaceDocument spaceDoc = null;
try {
+ Log.debug("Sim.getOrCreateSpaceSim: about to read it from the media service!");
spaceDoc = getSpaceDocument(record.getSpaceID());
+ Log.debug("Sim.getOrCreateSpaceSim: Media service:"+(spaceDoc==null));
} catch (IOException e) {
}
if (spaceDoc == null) {
+ Log.debug("Sim.getOrCreateSpaceSim:Now trying to get it from the DocumentFactory.");
spaceDoc = DocumentFactory.documentFromRecord(record);
} else {
+ Log.debug("Sim.getOrCreateSpaceSim: Setting basic properties... why aren't these there before?");
spaceDoc.setDisplayName(record.getDisplayName());
spaceDoc.setMaxGuests(record.getMaxGuests());
spaceDoc.setSimID(record.getSimID());
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2007-11-24 15:41:41 UTC (rev 602)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2007-11-26 18:30:26 UTC (rev 603)
@@ -98,6 +98,7 @@
renderer.setSimCamera(); //Sigh, you have to add a view before it will schedule the behavior
ThingDocument[] thingDocs = spaceDocument.getThingDocuments();
+ Log.debug("Initialization SpaceSimulator on space "+spaceDocument.getSpaceID()+" with "+thingDocs.length);
for (int i = 0; i < thingDocs.length; i++) {
TemplateDocument templateDoc = listener.getTemplateDocument(thingDocs[i].getTemplateID());
if (templateDoc == null) {
@@ -705,6 +706,7 @@
public ThingDocument[] getThingDocuments() {
Thing[] things = space.getThings();
+ Log.debug("SpaceSimulator: asked space object how many things:"+things.length);
ThingDocument[] results = new ThingDocument[things.length];
for (int i = 0; i < results.length; i++) {
results[i] = new ThingDocument(things[i]);
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptHTTPRequest.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptHTTPRequest.java 2007-11-24 15:41:41 UTC (rev 602)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptHTTPRequest.java 2007-11-26 18:30:26 UTC (rev 603)
@@ -228,6 +228,7 @@
method.setFollowRedirects(false);
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(1, false));
method.getParams().setParameter(HttpMethodParams.USER_AGENT, USER_AGENT);
+ Log.info("About to invoke an HTTP "+methodType+" on "+url+" from a sim script...");
try {
httpCode = client.executeMethod(method);
if (scriptSpace != null && destinationThingID != -1 && destinationPageID != -1) {
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 2007-11-24 15:41:41 UTC (rev 602)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-11-26 18:30:26 UTC (rev 603)
@@ -38,6 +38,7 @@
import com.ogoglio.client.WebAPIDescriptor;
import com.ogoglio.media.MediaService;
import com.ogoglio.persist.AccountRecord;
+import com.ogoglio.persist.PossessionPersistTasks;
import com.ogoglio.persist.ServiceInitializationPersistTasks;
import com.ogoglio.persist.SimPersistTasks;
import com.ogoglio.persist.SimRecord;
@@ -480,9 +481,11 @@
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
-
+ Log.debug("GET on SimServlet.ThingsResource: "+requestedSpaceID+" --- how many possessions?"+
+ (PossessionPersistTasks.findPossessionsBySpaceID(requestedSpaceID, getSessionFactory())));
SpaceSimulator simulator = sim.getOrCreateSpaceSimulator(spaceRecord);
ThingDocument[] thingDocs = simulator.getThingDocuments();
+ Log.debug("SimServlet, Thing request:"+thingDocs.length);
XMLElement list = new XMLElement("list");
for (int i = 0; i < thingDocs.length; i++) {
list.addChild(thingDocs[i].toElement());
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java 2007-11-24 15:41:41 UTC (rev 602)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java 2007-11-26 18:30:26 UTC (rev 603)
@@ -28,6 +28,10 @@
initBaseUrl();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
String mediaUrl = (String) envCtx.lookup("ogoglio/mediaURL");
+ if (!mediaUrl.endsWith("/")) {
+ Log.warn("mediaURL doesn't end with a '/': patching from "+mediaUrl+" to " + mediaUrl+"/");
+ mediaUrl=mediaUrl+"/";
+ }
boolean simsAllowRemoteAccess = "true".equals(envCtx.lookup("ogoglio/simsAllowRemoteAccess"));
File mailDir = null;
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 2007-11-24 15:41:41 UTC (rev 602)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2007-11-26 18:30:26 UTC (rev 603)
@@ -66,8 +66,11 @@
public void init(ServletConfig config) throws ServletException {
super.init(config);
try {
- messageProxy = new MessageProxy(getSessionFactory(),new WebAPIDescriptor(new URI(baseUrl)));
- config.getServletContext().setAttribute(MESSAGE_PROXY_KEY, messageProxy);
+ //don't bother running a proxy with no space resources!
+ if (servletNeeded) {
+ messageProxy = new MessageProxy(getSessionFactory(),new WebAPIDescriptor(new URI(baseUrl)));
+ config.getServletContext().setAttribute(MESSAGE_PROXY_KEY, messageProxy);
+ }
} catch (URISyntaxException e) {
throw new ServletException("Could not start the message proxy (bad URI for service):" + e);
} catch (IOException e) {
@@ -454,6 +457,7 @@
proxyURI += pathElements[i] + "/";
}
proxyURI += "?" + request.getQueryString();
+ Log.debug("DoProxy SpaceServlet: proxying request for thing:"+proxyURI+" with "+method);
proxy(new URI(proxyURI), method, request, response);
} catch (PersistException e) {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/StatusServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/StatusServlet.java 2007-11-24 15:41:41 UTC (rev 602)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/StatusServlet.java 2007-11-26 18:30:26 UTC (rev 603)
@@ -34,6 +34,8 @@
private static final int MAX_RECENT_CHECKS = 10;
+ public static final int NO_SPACE_SERVLET = -7911;
+
public SiteResource createBaseResource(ServletConfig servletConfig) {
return new StatusResource();
}
@@ -243,9 +245,14 @@
}
private void addSpaceInfo(StatusData data) throws IOException {
- XMLElement space = frontDoorGetXML(getBaseUrl(),"space");
- data.simCount = space.getIntAttribute("simcount");
- data.userCount = space.getIntAttribute("usercount");
+ try {
+ XMLElement space = frontDoorGetXML(getBaseUrl(),"space");
+ data.simCount = space.getIntAttribute("simcount");
+ data.userCount = space.getIntAttribute("usercount");
+ } catch (IOException e) {
+ data.simCount=NO_SPACE_SERVLET;
+ data.userCount=NO_SPACE_SERVLET;
+ }
}
@@ -348,8 +355,12 @@
buffer.append(sd.fs[j].root + ":" + per + "% full\n");
}
}
- buffer.append("User count :" + sd.userCount + "\n");
- buffer.append("Sim count :" + sd.simCount + "\n");
+ if (sd.userCount!=NO_SPACE_SERVLET) {
+ buffer.append("User count :" + sd.userCount + "\n");
+ buffer.append("Sim count :" + sd.simCount + "\n");
+ } else {
+ buffer.append("Space servlet not present\n");
+ }
buffer.append("-----------------------------------------------\n");
}
@@ -566,14 +577,19 @@
}
private String dodgyConversionOfSimURI(String simURI) {
+ return dodgyConversionOfURI(simURI, "/og/sim/");
+ }
+ private String dodgyConversionOfMediaURI(String mediaURI) {
+ return dodgyConversionOfURI(mediaURI, "/og/media/");
+ }
+ private String dodgyConversionOfURI(String URI, String suffix) {
String result;
- String standardSIMSuffix="/og/sim/";
- if (!simURI.endsWith(standardSIMSuffix)) {
- Log.error("Don't understand the sim URI we got, so we can't convert to a status URI:"+simURI);
- return simURI; //not a great answer, but it'll cause IOExceptions elsewhere
+ if (!URI.endsWith(suffix)) {
+ Log.error("Don't understand the URI we got, so we can't convert to a a better URI:"+URI);
+ return URI; //not a great answer, but it'll cause IOExceptions elsewhere
}
- result=simURI.substring(0,simURI.length()-standardSIMSuffix.length()) + "/og/status";
- Log.warn("Somewhat dodgy: Converting the URI "+simURI +" to "+result+" for status report!");
+ result=URI.substring(0,URI.length()-suffix.length()) + "/og/";
+ Log.warn("Somewhat dodgy: Converting the URI "+URI+" to "+result+" for status report!");
return result;
}
private void formatForHuman(StringBuffer buffer) {
@@ -590,7 +606,9 @@
buffer.append("Sim Server:" + sim.getDisplayName() + " [" + sim.getSimID() + "] " + sim.getSimURI() + "\n");
buffer.append("===============================================\n");
if (!isOnLocalhost(sim)) {
- statusReports = frontDoorGetText(dodgyConversionOfSimURI(sim.getSimURI().toString()),STATUS_HUMAN);
+ String hackedURI=dodgyConversionOfSimURI(sim.getSimURI().toString());
+ buffer.append("Hacked sim status URI:"+hackedURI+"\n");
+ statusReports = frontDoorGetText(hackedURI,STATUS_HUMAN);
buffer.append(statusReports);
}
} catch (IOException e) {
@@ -601,11 +619,13 @@
buffer.append("Media Server:" + mediaURI+"\n");
buffer.append("===============================================\n");
if (!mediaURI.startsWith("file:")) {
- statusReports = frontDoorGetText(mediaURI,STATUS_HUMAN);
+ String patchedURI=dodgyConversionOfMediaURI(mediaURI);
+ buffer.append("Hacked media status URI:"+patchedURI+"\n");
+ statusReports = frontDoorGetText(patchedURI,STATUS_HUMAN);
buffer.append(statusReports);
}
} catch (IOException e) {
- buffer.append("Could not contact other status applet:" + e.getMessage());
+ buffer.append("Could not contact other status servlet:" + e.getMessage());
} catch (PersistException e) {
buffer.append("Unable to contact database [PersistException]:" + e.getMessage());
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|