josmas / openwonderland

Automatically exported from code.google.com/p/openwonderland
GNU General Public License v2.0
3 stars 5 forks source link

Clearing Avatar Corruptions #263

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Have a corrupt avatar file on client PC
2. Client clears their cache to remove corrupt avatar
3. Corrupt avatar is still propagated to all clients

What is the expected output? What do you see instead?
Clearing the clients cache only does this on the client PC.
The corrupted avatar file is still present on the OWL server in the clients 
directory.
This causes OWL server to propagate this to every client that accesses the 
system.
Other clients see a constantly flickering "Loading Avatar" message and the 
offending client disappears from the world view.
The offending client can still interact with the world (talking, moving, etc).  
They are just invisible to everyone else.

What version of the product are you using? On what operating system?
0.5, February 2012 version.
Server is Centos, clients are Windows PC's (XP, Vista and 7).

Please provide any additional information below.

Original issue reported on code.google.com by support%...@gtempaccount.com on 20 Apr 2012 at 3:52

GoogleCodeExporter commented 9 years ago
Nicole to try to reproduce

Original comment by jonathan...@gmail.com on 23 Apr 2012 at 9:40

GoogleCodeExporter commented 9 years ago
I do not have a copy of a corrupt avatar, as we have only seen this once.

On the server the directory we deleted from was:
.wonderland-server/0.5/run/content/users/<OWL_name>/avatars/imi

where "<OWL_name>" is the OWL name the user logged in with.
We deleted all the xml files in this directory.
For example we deleted the files:
NewAvatar1_1.xml,NewAvatar1_2.xml, etc

Original comment by support%...@gtempaccount.com on 26 Apr 2012 at 9:16

GoogleCodeExporter commented 9 years ago
The avatar system throws an unchecked ExceptionInInitializerError at 
Character.java:2474, as seen in the stack below.  This is not properly handled 
in Darkstar at CompleteMessageFilter.java:138, causing the message to get 
stuck.  The solution is to catch the ExceptionInInitializerError earlier in the 
process.

May 31, 2012 9:38:25 AM imi.character.Character <init>
SEVERE: Failed to parse the file! null
May 31, 2012 9:38:25 AM imi.character.Character <init>
SEVERE: null : null : javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException: XML document structures must start and end 
within the same entity.]
May 31, 2012 9:38:25 AM 
org.jdesktop.wonderland.modules.avatarbase.client.jme.cellrenderer.AvatarImiJME 
loadAvatar
WARNING: Failed to load avatar character for url 
http://192.168.3.42:9090/webdav/content/users/Ani/avatars/imi/NewAvatar1_3.xml
java.lang.ExceptionInInitializerError: JAXB was unable to parse 
http://192.168.3.42:9090/webdav/content/users/Ani/avatars/imi/NewAvatar1_3.xml
    at imi.character.Character.<init>(Character.java:2474)
    at imi.character.avatar.Avatar.<init>(Avatar.java:82)
    at org.jdesktop.wonderland.modules.avatarbase.client.jme.cellrenderer.WlAvatarCharacter.<init>(WlAvatarCharacter.java:116)
    at org.jdesktop.wonderland.modules.avatarbase.client.jme.cellrenderer.WlAvatarCharacter$WlAvatarCharacterBuilder.build(WlAvatarCharacter.java:106)
    at org.jdesktop.wonderland.modules.avatarbase.client.imi.ImiAvatarLoader.getAvatarCharacter(ImiAvatarLoader.java:72)
    at org.jdesktop.wonderland.modules.avatarbase.client.jme.cellrenderer.AvatarImiJME.loadAvatarInternal(AvatarImiJME.java:689)
    at org.jdesktop.wonderland.modules.avatarbase.client.jme.cellrenderer.AvatarImiJME.loadAvatar(AvatarImiJME.java:605)
    at org.jdesktop.wonderland.modules.avatarbase.client.jme.cellrenderer.AvatarImiJME.loadAndChangeAvatar(AvatarImiJME.java:579)
    at org.jdesktop.wonderland.modules.avatarbase.client.jme.cellrenderer.AvatarImiJME$AvatarChangeListener.avatarConfigChanged(AvatarImiJME.java:1009)
    at org.jdesktop.wonderland.modules.avatarbase.client.cell.AvatarConfigComponent.fireAvatarConfigChangeEvent(AvatarConfigComponent.java:209)
    at org.jdesktop.wonderland.modules.avatarbase.client.cell.AvatarConfigComponent.handleConfigMessage(AvatarConfigComponent.java:221)
    at org.jdesktop.wonderland.modules.avatarbase.client.cell.AvatarConfigComponent.access$000(AvatarConfigComponent.java:60)
    at org.jdesktop.wonderland.modules.avatarbase.client.cell.AvatarConfigComponent$1.messageReceived(AvatarConfigComponent.java:122)
    at org.jdesktop.wonderland.client.cell.ChannelComponent.messageReceived(ChannelComponent.java:123)
    at org.jdesktop.wonderland.client.cell.CellChannelConnection$ChannelMessageReceiver.messageReceived(CellChannelConnection.java:409)
    at org.jdesktop.wonderland.client.cell.CellChannelConnection$CellMessageDelivery.deliver(CellChannelConnection.java:322)
    at org.jdesktop.wonderland.client.cell.CellChannelConnection.handleMessage(CellChannelConnection.java:158)
    at org.jdesktop.wonderland.client.comms.BaseConnection.messageReceived(BaseConnection.java:125)
    at org.jdesktop.wonderland.client.comms.WonderlandSessionImpl$ClientRecord.handleMessage(WonderlandSessionImpl.java:1002)
    at org.jdesktop.wonderland.client.comms.WonderlandSessionImpl.fireSessionMessageReceived(WonderlandSessionImpl.java:489)
    at org.jdesktop.wonderland.client.comms.WonderlandSessionImpl$WonderlandClientListener$1.receivedMessage(WonderlandSessionImpl.java:772)
    at com.sun.sgs.client.simple.SimpleClient$SimpleClientChannel.receivedMessage(SimpleClient.java:861)
    at com.sun.sgs.client.simple.SimpleClient$SimpleClientConnectionListener.handleChannelMessage(SimpleClient.java:733)
    at com.sun.sgs.client.simple.SimpleClient$SimpleClientConnectionListener.handleApplicationMessage(SimpleClient.java:506)
    at com.sun.sgs.client.simple.SimpleClient$SimpleClientConnectionListener.receivedMessage(SimpleClient.java:442)
    at com.sun.sgs.impl.client.simple.SimpleClientConnection.bytesReceived(SimpleClientConnection.java:170)
    at com.sun.sgs.impl.io.SocketConnection.filteredMessageReceived(SocketConnection.java:144)
    at com.sun.sgs.impl.io.CompleteMessageFilter.processReceiveBuffer(CompleteMessageFilter.java:138)
    at com.sun.sgs.impl.io.CompleteMessageFilter.filterReceive(CompleteMessageFilter.java:103)
    at com.sun.sgs.impl.io.SocketConnectionListener.messageReceived(SocketConnectionListener.java:128)
    at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:703)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:362)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:54)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:800)
    at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:247)
    at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:307)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)

Original comment by jonathan...@gmail.com on 31 May 2012 at 4:43

GoogleCodeExporter commented 9 years ago
This issue was closed by revision r4846.

Original comment by jonathan...@gmail.com on 31 May 2012 at 4:45