OpenSim Mantis Tracker
| Anonymous | Login | Signup for a new account | 2010-07-31 17:27 PDT |
| Main | My View | View Issues | Change Log | Roadmap | Summary | Docs | My Account |
| Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | |||||||||||
| ID | Category | Severity | Reproducibility | Date Submitted | Last Update | |||||||
| 0003059 | [opensim] [REGION] OpenSim Core | major | always | 2009-01-28 11:04 | 2010-06-07 09:24 | |||||||
| Reporter | justincc | View Status | public | |||||||||
| Assigned To | justincc | |||||||||||
| Priority | normal | Resolution | reopened | |||||||||
| Status | feedback | Product Version | ||||||||||
| Summary | 0003059: Non-root prims deleted shortly after delink always reappear on server restart | |||||||||||
| Description |
Here's the reproduction procedure. It's not the absolute simplest but might be the clearest 1. Link a group of 3 prims. Wait for the "Storing" message on the console which signals that the objects have been persisted. 2. Delink the linkset and immediately delete one of the prims that used to be a non-root prim in the linkset. 3. Wait for the "Storing" message. 4. Restart the server. 5. The prim you deleted will have reappeared - the 3 prims |
|||||||||||
| Additional Information |
What's happening here is that when a linkset is delinked, the existing entries in the database are overwritten with new SceneGroupIDs and linkNumbers that indicate their newly unlinked status. However, this is only done after a delay (which was put in place to avoid lots of database writes when a prim was changing a lot). But if you delete the prim before this persist has happened, the delete actually fails because the SceneGroupID it looks for via IRegionDataStore.RemoveObject() in order to know what to delete doesn't yet exist (since the new objects from the delink haven't been written yet). Therefore, when the delayed delink happens the delete object gets put back (though it appears with the old SceneGroupID and link number). Unfortunately, there is no straightforward solution to this. One approach would be to circumvent the delay and persist delinked prims immediately (so that the subsequent delete works correctly). However, if this is done on the client thread then it may cause a significant delay with large linksets. If it is not done on the client thread there will still be a race condition (though a much smaller one - more like what we probably had before when all persists were done immediately). I'm curious as to whether idb has any thoughts on this. |
|||||||||||
| Tags | No tags attached. | |||||||||||
| Git Revision | ||||||||||||
| SVN Revision | 8170 | |||||||||||
| Run Mode | Standalone (1 Region) | |||||||||||
| Physics Engine | ODE | |||||||||||
| Environment | Mono / Linux32 | |||||||||||
| Mono Version | 1.9.1 | |||||||||||
| Attached Files | ||||||||||||
|
|
||||||||||||
Relationships |
||||||||||||||||
|
||||||||||||||||
| Mantis 1.1.1[^] Copyright © 2000 - 2008 Mantis Group |