aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-03-19 00:18:04 +0000
committerJustin Clark-Casey (justincc)2012-03-19 00:18:04 +0000
commitab54ce1907e26935bfb847742d4f5aa95d34aca0 (patch)
treea344f26ee815a7d2f7ff23cef0cbf6cdf0315435
parentAmend to previous commit: normalize strings ToLower. (diff)
downloadopensim-SC_OLD-ab54ce1907e26935bfb847742d4f5aa95d34aca0.zip
opensim-SC_OLD-ab54ce1907e26935bfb847742d4f5aa95d34aca0.tar.gz
opensim-SC_OLD-ab54ce1907e26935bfb847742d4f5aa95d34aca0.tar.bz2
opensim-SC_OLD-ab54ce1907e26935bfb847742d4f5aa95d34aca0.tar.xz
Fix configuration problems where XAssetDatabasePlugin was picked up accidentally.
The asset data plugin now implements IXAssetData rather than IAssetData so the ordinary AssetService should no longer pick it up. This replaces the changes in 92b1ade. There is no longer any need to adjust your StandaloneCommon.ini/Robust.ini/Robust.HG.ini files. This may explain very recent issues in the last few weeks where textures have been disappearing or turning white (as they were going to different places). Unfortunately, you will need to rollback to an earlier database backup or reupload the textures.
-rw-r--r--OpenSim/Data/IXAssetDataPlugin.cs47
-rw-r--r--OpenSim/Data/MySQL/MySQLXAssetData.cs22
-rw-r--r--OpenSim/Services/AssetService/XAssetService.cs2
-rw-r--r--OpenSim/Services/AssetService/XAssetServiceBase.cs94
-rw-r--r--bin/Robust.HG.ini.example1
-rw-r--r--bin/Robust.ini.example1
-rw-r--r--bin/config-include/StandaloneCommon.ini.example3
7 files changed, 154 insertions, 16 deletions
diff --git a/OpenSim/Data/IXAssetDataPlugin.cs b/OpenSim/Data/IXAssetDataPlugin.cs
new file mode 100644
index 0000000..74ad6f4
--- /dev/null
+++ b/OpenSim/Data/IXAssetDataPlugin.cs
@@ -0,0 +1,47 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System.Collections.Generic;
29using OpenMetaverse;
30using OpenSim.Framework;
31
32namespace OpenSim.Data
33{
34 /// <summary>
35 /// This interface exists to distinguish between the normal IAssetDataPlugin and the one used by XAssetService
36 /// for now.
37 /// </summary>
38 public interface IXAssetDataPlugin : IPlugin
39 {
40 AssetBase GetAsset(UUID uuid);
41 void StoreAsset(AssetBase asset);
42 bool ExistsAsset(UUID uuid);
43 List<AssetMetadata> FetchAssetMetadataSet(int start, int count);
44 void Initialise(string connect);
45 bool Delete(string id);
46 }
47} \ No newline at end of file
diff --git a/OpenSim/Data/MySQL/MySQLXAssetData.cs b/OpenSim/Data/MySQL/MySQLXAssetData.cs
index 06fe55a..e6ac22e 100644
--- a/OpenSim/Data/MySQL/MySQLXAssetData.cs
+++ b/OpenSim/Data/MySQL/MySQLXAssetData.cs
@@ -41,7 +41,7 @@ using OpenSim.Data;
41 41
42namespace OpenSim.Data.MySQL 42namespace OpenSim.Data.MySQL
43{ 43{
44 public class MySQLXAssetData : AssetDataBase 44 public class MySQLXAssetData : IXAssetDataPlugin
45 { 45 {
46 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 46 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
47 47
@@ -61,7 +61,7 @@ namespace OpenSim.Data.MySQL
61 61
62 #region IPlugin Members 62 #region IPlugin Members
63 63
64 public override string Version { get { return "1.0.0.0"; } } 64 public string Version { get { return "1.0.0.0"; } }
65 65
66 /// <summary> 66 /// <summary>
67 /// <para>Initialises Asset interface</para> 67 /// <para>Initialises Asset interface</para>
@@ -74,7 +74,7 @@ namespace OpenSim.Data.MySQL
74 /// </para> 74 /// </para>
75 /// </summary> 75 /// </summary>
76 /// <param name="connect">connect string</param> 76 /// <param name="connect">connect string</param>
77 public override void Initialise(string connect) 77 public void Initialise(string connect)
78 { 78 {
79 m_log.ErrorFormat("[MYSQL XASSETDATA]: ***********************************************************"); 79 m_log.ErrorFormat("[MYSQL XASSETDATA]: ***********************************************************");
80 m_log.ErrorFormat("[MYSQL XASSETDATA]: ***********************************************************"); 80 m_log.ErrorFormat("[MYSQL XASSETDATA]: ***********************************************************");
@@ -96,17 +96,17 @@ namespace OpenSim.Data.MySQL
96 } 96 }
97 } 97 }
98 98
99 public override void Initialise() 99 public void Initialise()
100 { 100 {
101 throw new NotImplementedException(); 101 throw new NotImplementedException();
102 } 102 }
103 103
104 public override void Dispose() { } 104 public void Dispose() { }
105 105
106 /// <summary> 106 /// <summary>
107 /// The name of this DB provider 107 /// The name of this DB provider
108 /// </summary> 108 /// </summary>
109 override public string Name 109 public string Name
110 { 110 {
111 get { return "MySQL XAsset storage engine"; } 111 get { return "MySQL XAsset storage engine"; }
112 } 112 }
@@ -121,7 +121,7 @@ namespace OpenSim.Data.MySQL
121 /// <param name="assetID">Asset UUID to fetch</param> 121 /// <param name="assetID">Asset UUID to fetch</param>
122 /// <returns>Return the asset</returns> 122 /// <returns>Return the asset</returns>
123 /// <remarks>On failure : throw an exception and attempt to reconnect to database</remarks> 123 /// <remarks>On failure : throw an exception and attempt to reconnect to database</remarks>
124 override public AssetBase GetAsset(UUID assetID) 124 public AssetBase GetAsset(UUID assetID)
125 { 125 {
126// m_log.DebugFormat("[MYSQL XASSET DATA]: Looking for asset {0}", assetID); 126// m_log.DebugFormat("[MYSQL XASSET DATA]: Looking for asset {0}", assetID);
127 127
@@ -190,7 +190,7 @@ namespace OpenSim.Data.MySQL
190 /// </summary> 190 /// </summary>
191 /// <param name="asset">Asset UUID to create</param> 191 /// <param name="asset">Asset UUID to create</param>
192 /// <remarks>On failure : Throw an exception and attempt to reconnect to database</remarks> 192 /// <remarks>On failure : Throw an exception and attempt to reconnect to database</remarks>
193 override public void StoreAsset(AssetBase asset) 193 public void StoreAsset(AssetBase asset)
194 { 194 {
195 lock (m_dbLock) 195 lock (m_dbLock)
196 { 196 {
@@ -380,7 +380,7 @@ namespace OpenSim.Data.MySQL
380 /// </summary> 380 /// </summary>
381 /// <param name="uuid">The asset UUID</param> 381 /// <param name="uuid">The asset UUID</param>
382 /// <returns>true if it exists, false otherwise.</returns> 382 /// <returns>true if it exists, false otherwise.</returns>
383 override public bool ExistsAsset(UUID uuid) 383 public bool ExistsAsset(UUID uuid)
384 { 384 {
385// m_log.DebugFormat("[ASSETS DB]: Checking for asset {0}", uuid); 385// m_log.DebugFormat("[ASSETS DB]: Checking for asset {0}", uuid);
386 386
@@ -426,7 +426,7 @@ namespace OpenSim.Data.MySQL
426 /// <param name="start">The number of results to discard from the total data set.</param> 426 /// <param name="start">The number of results to discard from the total data set.</param>
427 /// <param name="count">The number of rows the returned list should contain.</param> 427 /// <param name="count">The number of rows the returned list should contain.</param>
428 /// <returns>A list of AssetMetadata objects.</returns> 428 /// <returns>A list of AssetMetadata objects.</returns>
429 public override List<AssetMetadata> FetchAssetMetadataSet(int start, int count) 429 public List<AssetMetadata> FetchAssetMetadataSet(int start, int count)
430 { 430 {
431 List<AssetMetadata> retList = new List<AssetMetadata>(count); 431 List<AssetMetadata> retList = new List<AssetMetadata>(count);
432 432
@@ -471,7 +471,7 @@ namespace OpenSim.Data.MySQL
471 return retList; 471 return retList;
472 } 472 }
473 473
474 public override bool Delete(string id) 474 public bool Delete(string id)
475 { 475 {
476// m_log.DebugFormat("[XASSETS DB]: Deleting asset {0}", id); 476// m_log.DebugFormat("[XASSETS DB]: Deleting asset {0}", id);
477 477
diff --git a/OpenSim/Services/AssetService/XAssetService.cs b/OpenSim/Services/AssetService/XAssetService.cs
index d161c58..05eb125 100644
--- a/OpenSim/Services/AssetService/XAssetService.cs
+++ b/OpenSim/Services/AssetService/XAssetService.cs
@@ -42,7 +42,7 @@ namespace OpenSim.Services.AssetService
42 /// This will be developed into a de-duplicating asset service. 42 /// This will be developed into a de-duplicating asset service.
43 /// XXX: Currently it's a just a copy of the existing AssetService. so please don't attempt to use it. 43 /// XXX: Currently it's a just a copy of the existing AssetService. so please don't attempt to use it.
44 /// </summary> 44 /// </summary>
45 public class XAssetService : AssetServiceBase, IAssetService 45 public class XAssetService : XAssetServiceBase, IAssetService
46 { 46 {
47 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 47 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
48 48
diff --git a/OpenSim/Services/AssetService/XAssetServiceBase.cs b/OpenSim/Services/AssetService/XAssetServiceBase.cs
new file mode 100644
index 0000000..0c5c2c3
--- /dev/null
+++ b/OpenSim/Services/AssetService/XAssetServiceBase.cs
@@ -0,0 +1,94 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Reflection;
30using Nini.Config;
31using OpenSim.Framework;
32using OpenSim.Data;
33using OpenSim.Services.Interfaces;
34using OpenSim.Services.Base;
35
36namespace OpenSim.Services.AssetService
37{
38 public class XAssetServiceBase : ServiceBase
39 {
40 protected IXAssetDataPlugin m_Database = null;
41 protected IAssetLoader m_AssetLoader = null;
42
43 public XAssetServiceBase(IConfigSource config) : base(config)
44 {
45 string dllName = String.Empty;
46 string connString = String.Empty;
47
48 //
49 // Try reading the [AssetService] section first, if it exists
50 //
51 IConfig assetConfig = config.Configs["AssetService"];
52 if (assetConfig != null)
53 {
54 dllName = assetConfig.GetString("StorageProvider", dllName);
55 connString = assetConfig.GetString("ConnectionString", connString);
56 }
57
58 //
59 // Try reading the [DatabaseService] section, if it exists
60 //
61 IConfig dbConfig = config.Configs["DatabaseService"];
62 if (dbConfig != null)
63 {
64 if (dllName == String.Empty)
65 dllName = dbConfig.GetString("StorageProvider", String.Empty);
66 if (connString == String.Empty)
67 connString = dbConfig.GetString("ConnectionString", String.Empty);
68 }
69
70 //
71 // We tried, but this doesn't exist. We can't proceed.
72 //
73 if (dllName.Equals(String.Empty))
74 throw new Exception("No StorageProvider configured");
75
76 m_Database = LoadPlugin<IXAssetDataPlugin>(dllName);
77 if (m_Database == null)
78 throw new Exception("Could not find a storage interface in the given module");
79
80 m_Database.Initialise(connString);
81
82 string loaderName = assetConfig.GetString("DefaultAssetLoader",
83 String.Empty);
84
85 if (loaderName != String.Empty)
86 {
87 m_AssetLoader = LoadPlugin<IAssetLoader>(loaderName);
88
89 if (m_AssetLoader == null)
90 throw new Exception("Asset loader could not be loaded");
91 }
92 }
93 }
94} \ No newline at end of file
diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example
index d98c826..db9f08b 100644
--- a/bin/Robust.HG.ini.example
+++ b/bin/Robust.HG.ini.example
@@ -66,7 +66,6 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003
66; * in turn, reads the asset loader and database connection information 66; * in turn, reads the asset loader and database connection information
67; * 67; *
68[AssetService] 68[AssetService]
69 StorageProvider = "OpenSim.Data.MySQL.dll:MySQLAssetData"
70 LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService" 69 LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
71 DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll" 70 DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
72 AssetLoaderArgs = "./assets/AssetSets.xml" 71 AssetLoaderArgs = "./assets/AssetSets.xml"
diff --git a/bin/Robust.ini.example b/bin/Robust.ini.example
index 691bfdc..326caeb 100644
--- a/bin/Robust.ini.example
+++ b/bin/Robust.ini.example
@@ -58,7 +58,6 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003
58; * in turn, reads the asset loader and database connection information 58; * in turn, reads the asset loader and database connection information
59; * 59; *
60[AssetService] 60[AssetService]
61 StorageProvider = "OpenSim.Data.MySQL.dll:MySQLAssetData"
62 LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService" 61 LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
63 DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll" 62 DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
64 AssetLoaderArgs = "./assets/AssetSets.xml" 63 AssetLoaderArgs = "./assets/AssetSets.xml"
diff --git a/bin/config-include/StandaloneCommon.ini.example b/bin/config-include/StandaloneCommon.ini.example
index 4c734a1..3dfbed7 100644
--- a/bin/config-include/StandaloneCommon.ini.example
+++ b/bin/config-include/StandaloneCommon.ini.example
@@ -44,7 +44,6 @@
44 ;AuthorizationServices = "LocalAuthorizationServicesConnector" 44 ;AuthorizationServices = "LocalAuthorizationServicesConnector"
45 45
46[AssetService] 46[AssetService]
47 StorageProvider = "OpenSim.Data.MySQL.dll:MySQLAssetData"
48 DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll" 47 DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
49 AssetLoaderArgs = "assets/AssetSets.xml" 48 AssetLoaderArgs = "assets/AssetSets.xml"
50 49
@@ -241,4 +240,4 @@
241 ; DisallowForeigners -- HG visitors not allowed 240 ; DisallowForeigners -- HG visitors not allowed
242 ; DisallowResidents -- only Admins and Managers allowed 241 ; DisallowResidents -- only Admins and Managers allowed
243 ; Example: 242 ; Example:
244 ; Region_Test_1 = "DisallowForeigners" \ No newline at end of file 243 ; Region_Test_1 = "DisallowForeigners"