From 6f077d5e5f9929f6593850dc096983dcf237e387 Mon Sep 17 00:00:00 2001 From: Teravus Ovares (Dan Olivares) Date: Wed, 26 Aug 2009 21:05:46 -0400 Subject: * Another attempt at fixing the random spurious test error. * This time it might be the listening socket thread from HttpServer aborting with a non blocking thread abort exception. Hopefully calling Stop() on MainServer.Instance will solve that. --- .../Tests/Cache/UserProfileCacheServiceTests.cs | 11 +++++++++++ .../Communications/Tests/LoginServiceTests.cs | 10 ++++++++++ .../Framework/Servers/HttpServer/BaseHttpServer.cs | 19 +++++++++++++------ .../Framework/Scenes/Tests/ScenePresenceTests.cs | 6 ++++++ .../Framework/Scenes/Tests/StandaloneTeleportTests.cs | 11 +++++++++++ prebuild.xml | 9 +++++++-- 6 files changed, 58 insertions(+), 8 deletions(-) diff --git a/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs b/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs index 933fa12..2bb0926 100644 --- a/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs +++ b/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs @@ -330,5 +330,16 @@ namespace OpenSim.Framework.Communications.Tests Assert.That(rootFolder.RequestListOfFolders(), Is.Empty); Assert.That(myScene.InventoryService.GetFolder(myFolder), Is.Null); } + + [TearDown] + public void TearDown() + { + try + { + if (MainServer.Instance != null) MainServer.Instance.Stop(); + } + catch (System.NullReferenceException) + { } + } } } \ No newline at end of file diff --git a/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs b/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs index 57a908e..0a9d2ae 100644 --- a/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs +++ b/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs @@ -362,6 +362,16 @@ namespace OpenSim.Framework.Communications.Tests //Console.WriteLine("Finished T023_TestAuthenticatedLoginAlreadyLoggedIn()"); } + [TearDown] + public void TearDown() + { + try + { + if (MainServer.Instance != null) MainServer.Instance.Stop(); + } catch (NullReferenceException) + {} + } + public class TestLoginToRegionConnector : ILoginServiceToRegionsConnector { private List m_regionsList = new List(); diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index 75c9310..771ae05 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -1637,13 +1637,20 @@ namespace OpenSim.Framework.Servers.HttpServer public void Stop() { HTTPDRunning = false; - m_httpListener2.ExceptionThrown -= httpServerException; - //m_httpListener2.DisconnectHandler = null; - - m_httpListener2.LogWriter = null; - m_httpListener2.RequestReceived -= OnRequest; + try + { + m_httpListener2.ExceptionThrown -= httpServerException; + //m_httpListener2.DisconnectHandler = null; - m_httpListener2.Stop(); + m_httpListener2.LogWriter = null; + m_httpListener2.RequestReceived -= OnRequest; + m_httpListener2.Stop(); + } + catch (NullReferenceException) + { + m_log.Warn("[BASEHTTPSERVER]: Null Reference when stopping HttpServer."); + } + } public void RemoveStreamHandler(string httpMethod, string path) diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs index 3ee6007..8cd1d55 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs @@ -378,6 +378,12 @@ namespace OpenSim.Region.Framework.Scenes.Tests Assert.That(presence.HasAttachments(), Is.True, "Presence has not received new objects"); } + [TearDown] + public void TearDown() + { + if (MainServer.Instance != null) MainServer.Instance.Stop(); + } + public static string GetRandomCapsObjectPath() { TestHelper.InMethod(); diff --git a/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs b/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs index 23eab90..1d460dd 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs @@ -78,6 +78,17 @@ namespace OpenSim.Region.Framework.Scenes.Tests // Console.WriteLine("Beginning test {0}", MethodBase.GetCurrentMethod()); } + [TearDown] + public void TearDown() + { + try + { + if (MainServer.Instance != null) MainServer.Instance.Stop(); + } + catch (NullReferenceException) + { } + } + } public class ThreadRunResults diff --git a/prebuild.xml b/prebuild.xml index 4dbb81c..343b06a 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -3181,6 +3181,7 @@ + @@ -3245,7 +3246,7 @@ ../../../bin/ - + @@ -3254,7 +3255,7 @@ - + @@ -3397,6 +3398,7 @@ + @@ -3488,6 +3490,7 @@ + @@ -3524,6 +3527,7 @@ + @@ -3585,6 +3589,7 @@ + -- cgit v1.1 From 40fbdaaac4a43f76d99422c2eb382db8d941d14d Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Thu, 27 Aug 2009 21:25:16 +0100 Subject: Apply http://opensimulator.org/mantis/view.php?id=3829 Fix file access violation on Flotsam cache Thanks mcortez --- OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index c7723f1..4b582c2 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs @@ -361,7 +361,7 @@ namespace Flotsam.RegionModules.AssetCache { try { - FileStream stream = File.Open(filename, FileMode.Open); + FileStream stream = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.Read); BinaryFormatter bformatter = new BinaryFormatter(); asset = (AssetBase)bformatter.Deserialize(stream); -- cgit v1.1 From 5bed0ba09b6dcbc891374a2448cafc3e6baafe49 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Thu, 27 Aug 2009 21:43:24 +0100 Subject: Add optimization comment suggestions for FlotsamCache MemoryCacheTimeout as suggested by Whitestar. Thanks! --- bin/config-include/FlotsamCache.ini.example | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/config-include/FlotsamCache.ini.example b/bin/config-include/FlotsamCache.ini.example index feb3897..abb3b9a 100644 --- a/bin/config-include/FlotsamCache.ini.example +++ b/bin/config-include/FlotsamCache.ini.example @@ -23,6 +23,8 @@ MemoryCacheEnabled = false ; How long {in hours} to keep assets cached in memory, .5 == 30 minutes + ; Optimization: for VPS or limited memory system installs set Timeout to .016 (1 minute) + ; increases performance without large memory impact MemoryCacheTimeout = 2 ; How long {in hours} to keep assets cached on disk, .5 == 30 minutes -- cgit v1.1 From d704e62b392763a0aa77543e6fa849c65db262ad Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Thu, 27 Aug 2009 21:49:32 +0100 Subject: Remove OpenSim.ini comments from the top of FlotsamAssetCache.cs to avoid duplication and divergence with config-include/FlotsamCache.ini.example --- .../Region/CoreModules/Asset/FlotsamAssetCache.cs | 51 ---------------------- 1 file changed, 51 deletions(-) diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index 4b582c2..c91b63e 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs @@ -53,57 +53,6 @@ using OpenSim.Services.Interfaces; namespace Flotsam.RegionModules.AssetCache { - /// - /// OpenSim.ini Options: - /// ------- - /// [Modules] - /// AssetCaching = "FlotsamAssetCache" - /// - /// [AssetCache] - /// ; cache directory can be shared by multiple instances - /// CacheDirectory = /directory/writable/by/OpenSim/instance - /// - /// ; Log level - /// ; 0 - (Error) Errors only - /// ; 1 - (Info) Hit Rate Stats + Level 0 - /// ; 2 - (Debug) Cache Activity (Reads/Writes) + Level 1 - /// ; - /// LogLevel = 1 - /// - /// ; How often should hit rates be displayed (given in AssetRequests) - /// ; 0 to disable - /// HitRateDisplay = 100 - /// - /// ; Set to false for disk cache only. - /// MemoryCacheEnabled = true - /// - /// ; How long {in hours} to keep assets cached in memory, .5 == 30 minutes - /// MemoryCacheTimeout = 2 - /// - /// ; How long {in hours} to keep assets cached on disk, .5 == 30 minutes - /// ; Specify 0 if you do not want your disk cache to expire - /// FileCacheTimeout = 0 - /// - /// ; How often {in hours} should the disk be checked for expired filed - /// ; Specify 0 to disable expiration checking - /// FileCleanupTimer = .166 ;roughly every 10 minutes - /// - /// ; If WAIT_ON_INPROGRESS_REQUESTS has been defined then this specifies how - /// ; long (in miliseconds) to block a request thread while trying to complete - /// ; writing to disk. - /// WaitOnInprogressTimeout = 3000 - /// - /// ; Number of tiers to use for cache directories (current valid range 1 to 3) - /// CacheDirectoryTiers = 1 - /// - /// ; Number of letters per path tier, 1 will create 16 directories per tier, 2 - 256, 3 - 4096 and 4 - 65K - /// CacheDirectoryTierLength = 3 - /// - /// ; Warning level for cache directory size - /// CacheWarnAt = 30000 - /// ------- - /// - [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")] public class FlotsamAssetCache : ISharedRegionModule, IImprovedAssetCache { -- cgit v1.1