From fba9e3f513a0d9b4e0ccaf5a9fe24899d96e98c8 Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Sun, 23 Nov 2008 20:39:51 +0000
Subject: Don't serve texture preview from other people's objects if you
havenever seen that texture before.
---
OpenSim/Data/MySQL/MySQLRegionData.cs | 52 ++++++++++++++++++++++++++---------
1 file changed, 39 insertions(+), 13 deletions(-)
(limited to 'OpenSim/Data/MySQL')
diff --git a/OpenSim/Data/MySQL/MySQLRegionData.cs b/OpenSim/Data/MySQL/MySQLRegionData.cs
index 2e36123..f57d485 100644
--- a/OpenSim/Data/MySQL/MySQLRegionData.cs
+++ b/OpenSim/Data/MySQL/MySQLRegionData.cs
@@ -141,6 +141,14 @@ namespace OpenSim.Data.MySQL
Migration m = new Migration(m_connection, assem, "RegionStore");
m.Update();
+ PrepareConnection();
+ }
+
+ public void Dispose() {}
+
+ private void PrepareConnection()
+ {
+ GetWaitTimeout();
MySqlCommand primSelectCmd = new MySqlCommand(m_primSelect, m_connection);
m_primDataAdapter = new MySqlDataAdapter(primSelectCmd);
@@ -203,8 +211,6 @@ namespace OpenSim.Data.MySQL
}
}
- public void Dispose() {}
-
///
/// Get the wait_timeout value for our connection
///
@@ -254,6 +260,8 @@ namespace OpenSim.Data.MySQL
m_connection.Close();
m_connection = new MySqlConnection(m_connectionString);
m_connection.Open();
+
+ PrepareConnection();
}
}
@@ -308,22 +316,40 @@ namespace OpenSim.Data.MySQL
/// The region UUID
public void StoreObject(SceneObjectGroup obj, UUID regionUUID)
{
- lock (m_dataSet)
+ int tries = 3;
+ while (tries > 0)
{
- foreach (SceneObjectPart prim in obj.Children.Values)
+ tries--;
+
+ try
{
- if ((prim.GetEffectiveObjectFlags() & (uint)PrimFlags.Temporary) == 0
- && (prim.GetEffectiveObjectFlags() & (uint)PrimFlags.TemporaryOnRez) == 0)
- {
- //m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID);
- addPrim(prim, obj.UUID, regionUUID);
- }
- else
+ lock (m_dataSet)
{
- // m_log.Info("[DATASTORE]: Ignoring Physical obj: " + obj.UUID + " in region: " + regionUUID);
+ foreach (SceneObjectPart prim in obj.Children.Values)
+ {
+ if ((prim.GetEffectiveObjectFlags() & (uint)PrimFlags.Temporary) == 0
+ && (prim.GetEffectiveObjectFlags() & (uint)PrimFlags.TemporaryOnRez) == 0)
+ {
+ //m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID);
+ addPrim(prim, obj.UUID, regionUUID);
+ }
+ else
+ {
+ // m_log.Info("[DATASTORE]: Ignoring Physical obj: " + obj.UUID + " in region: " + regionUUID);
+ }
+ }
+ Commit();
+ return;
}
}
- Commit();
+ catch(MySqlException)
+ {
+ m_connection.Close();
+ m_connection = new MySqlConnection(m_connectionString);
+ m_connection.Open();
+
+ PrepareConnection();
+ }
}
}
--
cgit v1.1