diff options
author | Justin Clarke Casey | 2009-01-29 20:08:04 +0000 |
---|---|---|
committer | Justin Clarke Casey | 2009-01-29 20:08:04 +0000 |
commit | 13f069b945b10ccdcb7ffd26392a0c9166914852 (patch) | |
tree | 89cfec025d3c41b3f94d4c93e3dcbfb53d225924 /OpenSim/Data/MySQL/MySQLRegionData.cs | |
parent | Complete the implementation of llSHA1String. (diff) | |
download | opensim-SC-13f069b945b10ccdcb7ffd26392a0c9166914852.zip opensim-SC-13f069b945b10ccdcb7ffd26392a0c9166914852.tar.gz opensim-SC-13f069b945b10ccdcb7ffd26392a0c9166914852.tar.bz2 opensim-SC-13f069b945b10ccdcb7ffd26392a0c9166914852.tar.xz |
* If an orphaned group is found in the mysql or mssql databases (i.e. there is no prim where UUID = SceneGroupID), then force one prim to have UUID = SceneGroupID.
* A warning is posted about this on startup giving the location of the object
* This should allow one class of persistently undeletable prims to be removed
* This change should not cause any issues, but I still suggest that you backup your database beforehand
* If this doesn't work for previously linked objects, then you could also try the workaround in http://opensimulator.org/mantis/view.php?id=3059
* This change has been made to mysql and mssql, but sqlite appears to work in a different way
Diffstat (limited to 'OpenSim/Data/MySQL/MySQLRegionData.cs')
-rw-r--r-- | OpenSim/Data/MySQL/MySQLRegionData.cs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/OpenSim/Data/MySQL/MySQLRegionData.cs b/OpenSim/Data/MySQL/MySQLRegionData.cs index a06dbb3..e1ddb54 100644 --- a/OpenSim/Data/MySQL/MySQLRegionData.cs +++ b/OpenSim/Data/MySQL/MySQLRegionData.cs | |||
@@ -455,6 +455,20 @@ namespace OpenSim.Data.MySQL | |||
455 | objects.Add(grp); | 455 | objects.Add(grp); |
456 | 456 | ||
457 | lastGroupID = groupID; | 457 | lastGroupID = groupID; |
458 | |||
459 | // There sometimes exist OpenSim bugs that 'orphan groups' so that none of the prims are | ||
460 | // recorded as the root prim (for which the UUID must equal the persisted group UUID). In | ||
461 | // this case, force the UUID to be the same as the group UUID so that at least these can be | ||
462 | // deleted (we need to change the UUID so that any other prims in the linkset can also be | ||
463 | // deleted). | ||
464 | if (prim.UUID != groupID && groupID != UUID.Zero) | ||
465 | { | ||
466 | m_log.WarnFormat( | ||
467 | "[REGION DB]: Found root prim {0} {1} at {2} where group was actually {3}. Forcing UUID to group UUID", | ||
468 | prim.Name, prim.UUID, prim.GroupPosition, groupID); | ||
469 | |||
470 | prim.UUID = groupID; | ||
471 | } | ||
458 | 472 | ||
459 | grp = new SceneObjectGroup(prim); | 473 | grp = new SceneObjectGroup(prim); |
460 | } | 474 | } |
@@ -484,7 +498,7 @@ namespace OpenSim.Data.MySQL | |||
484 | foreach (SceneObjectPart part in prims) | 498 | foreach (SceneObjectPart part in prims) |
485 | LoadItems(part); | 499 | LoadItems(part); |
486 | 500 | ||
487 | m_log.DebugFormat("[DATABASE] Loaded {0} objects using {1} prims", objects.Count, prims.Count); | 501 | m_log.DebugFormat("[REGION DB]: Loaded {0} objects using {1} prims", objects.Count, prims.Count); |
488 | 502 | ||
489 | return objects; | 503 | return objects; |
490 | } | 504 | } |