this is a believed fix for some of the MySQL races. Testing would
be appreciated.0.6.0-stable
parent
67a59b62e3
commit
1ad041707a
|
@ -158,9 +158,8 @@ namespace OpenSim.Framework.Data.MySQL
|
||||||
// m_log.Info("[DATASTORE]: Ignoring Physical obj: " + obj.UUID + " in region: " + regionUUID);
|
// m_log.Info("[DATASTORE]: Ignoring Physical obj: " + obj.UUID + " in region: " + regionUUID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
Commit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveObject(LLUUID obj, LLUUID regionUUID)
|
public void RemoveObject(LLUUID obj, LLUUID regionUUID)
|
||||||
|
@ -192,9 +191,8 @@ namespace OpenSim.Framework.Data.MySQL
|
||||||
// Remove prim row
|
// Remove prim row
|
||||||
row.Delete();
|
row.Delete();
|
||||||
}
|
}
|
||||||
|
Commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
Commit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -368,32 +366,34 @@ namespace OpenSim.Framework.Data.MySQL
|
||||||
{
|
{
|
||||||
m_connection.Open();
|
m_connection.Open();
|
||||||
}
|
}
|
||||||
|
|
||||||
using (MySqlDataReader row = cmd.ExecuteReader())
|
lock (m_dataSet)
|
||||||
{
|
{
|
||||||
int rev = 0;
|
using (MySqlDataReader row = cmd.ExecuteReader())
|
||||||
if (row.Read())
|
|
||||||
{
|
{
|
||||||
MemoryStream str = new MemoryStream((byte[]) row["Heightfield"]);
|
int rev = 0;
|
||||||
BinaryReader br = new BinaryReader(str);
|
if (row.Read())
|
||||||
for (int x = 0; x < 256; x++)
|
|
||||||
{
|
{
|
||||||
for (int y = 0; y < 256; y++)
|
MemoryStream str = new MemoryStream((byte[]) row["Heightfield"]);
|
||||||
|
BinaryReader br = new BinaryReader(str);
|
||||||
|
for (int x = 0; x < 256; x++)
|
||||||
{
|
{
|
||||||
terret[x, y] = br.ReadDouble();
|
for (int y = 0; y < 256; y++)
|
||||||
|
{
|
||||||
|
terret[x, y] = br.ReadDouble();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
rev = (int) row["Revision"];
|
||||||
}
|
}
|
||||||
rev = (int) row["Revision"];
|
else
|
||||||
|
{
|
||||||
|
m_log.Info("[DATASTORE]: No terrain found for region");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_log.Info("[DATASTORE]: Loaded terrain revision r" + rev.ToString());
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
m_log.Info("[DATASTORE]: No terrain found for region");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_log.Info("[DATASTORE]: Loaded terrain revision r" + rev.ToString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return terret;
|
return terret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -417,13 +417,8 @@ namespace OpenSim.Framework.Data.MySQL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Random rnd = new Random();
|
|
||||||
public void StoreLandObject(Land parcel, LLUUID regionUUID)
|
public void StoreLandObject(Land parcel, LLUUID regionUUID)
|
||||||
{
|
{
|
||||||
// Does the new locking fix it?
|
|
||||||
m_log.Info("[DATASTORE]: Tedds temp fix: Waiting 3 seconds to avoid others writing to table while we hold a dataset of it. (Someone please fix! :))");
|
|
||||||
System.Threading.Thread.Sleep(2500 + rnd.Next(0, 1000));
|
|
||||||
|
|
||||||
lock (m_dataSet)
|
lock (m_dataSet)
|
||||||
{
|
{
|
||||||
DataTable land = m_landTable;
|
DataTable land = m_landTable;
|
||||||
|
@ -455,9 +450,9 @@ namespace OpenSim.Framework.Data.MySQL
|
||||||
fillLandAccessRow(newAccessRow, entry, parcel.landData.globalID);
|
fillLandAccessRow(newAccessRow, entry, parcel.landData.globalID);
|
||||||
landaccesslist.Rows.Add(newAccessRow);
|
landaccesslist.Rows.Add(newAccessRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Commit();
|
||||||
}
|
}
|
||||||
Commit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<LandData> LoadLandObjects(LLUUID regionUUID)
|
public List<LandData> LoadLandObjects(LLUUID regionUUID)
|
||||||
|
|
Loading…
Reference in New Issue