diff options
author | Justin Clarke Casey | 2008-08-12 19:00:13 +0000 |
---|---|---|
committer | Justin Clarke Casey | 2008-08-12 19:00:13 +0000 |
commit | 4e555b87f31c0e82b6120564cd6d8e2b41a3b8bf (patch) | |
tree | 6aab22c68ef6fbc8262567cb0cdaa511ca965b54 | |
parent | Thanks, lulurun, for a patch that addresses inventory problems that occur (diff) | |
download | opensim-SC_OLD-4e555b87f31c0e82b6120564cd6d8e2b41a3b8bf.zip opensim-SC_OLD-4e555b87f31c0e82b6120564cd6d8e2b41a3b8bf.tar.gz opensim-SC_OLD-4e555b87f31c0e82b6120564cd6d8e2b41a3b8bf.tar.bz2 opensim-SC_OLD-4e555b87f31c0e82b6120564cd6d8e2b41a3b8bf.tar.xz |
* Stop warnings about non existent scene presences/entities being removed on client log off
* This is being done by preventing close from being called twice on child agent closure (nres which would have been thrown are being swallowed).
* However, it should be possible to do much better cleanup on this code in the future
4 files changed, 30 insertions, 17 deletions
diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs index db58738..2bc8dcd 100644 --- a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs +++ b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs | |||
@@ -86,7 +86,9 @@ namespace OpenSim.Framework.Communications.Cache | |||
86 | } | 86 | } |
87 | } | 87 | } |
88 | 88 | ||
89 | m_log.ErrorFormat("[USER CACHE]: Tried to remove the profile of user {0}, but this was not in the scene", userId); | 89 | m_log.WarnFormat( |
90 | "[USER CACHE]: Tried to remove the profile of user {0}, but this was not in the scene", userId); | ||
91 | |||
90 | return false; | 92 | return false; |
91 | } | 93 | } |
92 | 94 | ||
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 2d0215f..b143f3e 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -454,17 +454,25 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
454 | /// <param name="shutdownCircuit"></param> | 454 | /// <param name="shutdownCircuit"></param> |
455 | public void Close(bool shutdownCircuit) | 455 | public void Close(bool shutdownCircuit) |
456 | { | 456 | { |
457 | // Pull Client out of Region | 457 | m_log.DebugFormat( |
458 | m_log.Info("[CLIENT]: Close has been called"); | 458 | "[CLIENT]: Close has been called with shutdownCircuit = {0} on scene {1}", |
459 | shutdownCircuit, m_scene.RegionInfo.RegionName); | ||
460 | |||
459 | m_PacketHandler.Flush(); | 461 | m_PacketHandler.Flush(); |
460 | 462 | ||
461 | //raiseevent on the packet server to Shutdown the circuit | 463 | // raise an event on the packet server to Shutdown the circuit |
464 | // Now, if we raise the event then the packet server will call this method itself, so don't try cleanup | ||
465 | // here otherwise we'll end up calling it twice. | ||
466 | // FIXME: In truth, I might be wrong but this whole business of calling this method twice (with different args) looks | ||
467 | // horribly tangly. Hopefully it should be possible to greatly simplify it. | ||
462 | if (shutdownCircuit) | 468 | if (shutdownCircuit) |
463 | { | 469 | { |
464 | OnConnectionClosed(this); | 470 | OnConnectionClosed(this); |
465 | } | 471 | } |
466 | 472 | else | |
467 | CloseCleanup(shutdownCircuit); | 473 | { |
474 | CloseCleanup(shutdownCircuit); | ||
475 | } | ||
468 | } | 476 | } |
469 | 477 | ||
470 | public void Kick(string message) | 478 | public void Kick(string message) |
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index c4e4919..cdc05ee 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs | |||
@@ -584,26 +584,26 @@ namespace OpenSim.Region.Environment.Scenes | |||
584 | { | 584 | { |
585 | lock (Entities) | 585 | lock (Entities) |
586 | { | 586 | { |
587 | if (Entities.Remove(agentID)) | 587 | if (!Entities.Remove(agentID)) |
588 | { | ||
589 | //m_log.InfoFormat("[SCENE] Removed scene presence {0} from entities list", agentID); | ||
590 | } | ||
591 | else | ||
592 | { | 588 | { |
593 | m_log.WarnFormat("[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene Entities list", agentID); | 589 | m_log.WarnFormat("[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene Entities list", agentID); |
594 | } | 590 | } |
591 | // else | ||
592 | // { | ||
593 | // m_log.InfoFormat("[SCENE] Removed scene presence {0} from entities list", agentID); | ||
594 | // } | ||
595 | } | 595 | } |
596 | 596 | ||
597 | lock (ScenePresences) | 597 | lock (ScenePresences) |
598 | { | 598 | { |
599 | if (ScenePresences.Remove(agentID)) | 599 | if (!ScenePresences.Remove(agentID)) |
600 | { | ||
601 | //m_log.InfoFormat("[SCENE] Removed scene presence {0}", agentID); | ||
602 | } | ||
603 | else | ||
604 | { | 600 | { |
605 | m_log.WarnFormat("[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene ScenePresences list", agentID); | 601 | m_log.WarnFormat("[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene ScenePresences list", agentID); |
606 | } | 602 | } |
603 | // else | ||
604 | // { | ||
605 | // m_log.InfoFormat("[SCENE] Removed scene presence {0} from scene presences list", agentID); | ||
606 | // } | ||
607 | } | 607 | } |
608 | } | 608 | } |
609 | 609 | ||
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index b54713f..ef0a119 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -2259,6 +2259,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2259 | { | 2259 | { |
2260 | childagentYN = avatar.IsChildAgent; | 2260 | childagentYN = avatar.IsChildAgent; |
2261 | } | 2261 | } |
2262 | |||
2262 | try | 2263 | try |
2263 | { | 2264 | { |
2264 | m_log.DebugFormat( | 2265 | m_log.DebugFormat( |
@@ -2295,6 +2296,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2295 | // We don't know which count to remove it from | 2296 | // We don't know which count to remove it from |
2296 | // Avatar is already disposed :/ | 2297 | // Avatar is already disposed :/ |
2297 | } | 2298 | } |
2299 | |||
2298 | m_eventManager.TriggerOnRemovePresence(agentID); | 2300 | m_eventManager.TriggerOnRemovePresence(agentID); |
2299 | Broadcast(delegate(IClientAPI client) | 2301 | Broadcast(delegate(IClientAPI client) |
2300 | { | 2302 | { |
@@ -2631,6 +2633,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2631 | { | 2633 | { |
2632 | m_innerScene.removeUserCount(true); | 2634 | m_innerScene.removeUserCount(true); |
2633 | } | 2635 | } |
2636 | |||
2634 | // Tell a single agent to disconnect from the region. | 2637 | // Tell a single agent to disconnect from the region. |
2635 | presence.ControllingClient.SendShutdownConnectionNotice(); | 2638 | presence.ControllingClient.SendShutdownConnectionNotice(); |
2636 | 2639 | ||