| Commit message (Collapse) | Author | Files | Lines |
|
Object updates are sent on the task queue. It's possible for an object update to be placed on the client queue before a kill packet comes along.
The kill packet would then be placed on the state queue and possibly get sent before the update
If the update gets sent afterwards then client get undeletable no owner objects until relog
Placing the kills in the task queue should mean that they are received after updates. The kill record prevents subsequent updates getting on the queue
Comments state that updates are sent via the state queue but this isn't true. If this was the case this problem might not exist.
|
|
|
|
|
|
to reduce scope for kill/update race conditions
This is necessary because it was still possible for an entity update packet to be constructed, the thread to pause, a kill to be sent on another thread, and then the original thread to resume and send the update
This would result in an update being received after a kill, which results in undeletable ghost objects until the viewer is relogged
Extending the lock looks okay since its only taken by kill, update and reprioritize, and both kill and update do not take further locks
However, evidence suggests that there is still a kill/update race somewhere
|
|
code readability
|
|
scene, iterate over an unlocked list instead
Previously, deadlock was possible because deleting a group took a SOG.Children lock then an m_entityUpdates.SyncRoot lock in LLClientView
At the same time, a thread starting from LLClientView.ProcessEntityUpdates() could take an m_entityUpdates.SyncRoot lock then later attempt to take a SOG.Children lock in PermissionsModule.GenerateClientFlags() and later on
Taking a children list in SOG appears to be a better solution than changing PermissionsModule to not relook up the prim. Going the permission modules root would require that all downstream modules not take a SOG.Children lock either
|
|
all the other default files"
This reverts commit c3259e9c26f198b5fe0e7ed6c29c17c27c60ecb1.
Reverted by agreement.
|
|
other default files
|
|
This can get very spammy with regularly changing objects. Please uncomment if required.
|
|
|
|
Provide a mostly empty OpenSim.ini.example
|
|
OpenSim.ini.example to bin/OpenSimDefaults.ini.example
|
|
|
|
various points in the main scene loop and associated methods
|
|
unhandled GenericMessages
|
|
informative
|
|
being migrated to AttachmentsModule
|
|
ShowAttachInUserInventory() to match ShowDetachInUserInventory()
|
|
No core module is calling and it makes more sense to call methods such as AttachObject() which attach both to the avatar and update inventory appropriately
|
|
attachment as shown in inventory
Doing this results in a null reference exception
|
|
|
|
inclusive in Range: headers)
|
|
* Removed StorageManager
* CONFIG CHANGE: There are no more database settings in OpenSim.ini. Check the config-include configuration files for region store and estate store database settings
|
|
|
|
|
|
OpenSim.Services.Connectors.Simulation.SimulationDataServiceConnector
|
|
|
|
|
|
|
|
|
|
the regions directory (usually Regions/)
Also convert some tabs into spaces.
|
|
prevented passwords from being echoed after enter is pressed.
|
|
|
|
|
|
|
|
|
|
instantiate the right network connectors. Tested on Robust only.
|
|
connector to both Robust.HG.ini.example and HypergridServiceInConnectorModule.
|
|
(as much as is possible). There was a report of non-finite avatar positions after the update
|
|
avoid repeated requests for missing avatar IDs
* Updated to OpenMetaverse r3442 to fix a timezone issue with ExpiringCache
|
|
|
|
then adjust the inventory items to point to the new uuid as well
|
|
|
|
Previously, Scene.Inventory.DeRezObjects() forced the persistence of prims before deletion.
This is necessary so that freshly delinked prims can be deleted (otherwise they remain as parts of their old group and reappear on server restart).
However, DeRezObjects() deleted to user inventory, which is not required by llDie() or direct region module unlink and deletion.
Therefore, forced persistence has been pushed down into Scene.UnlinkSceneObject() to be more general, this is still on the DeRezObjects() path.
Uncommented TestDelinkPersistence() since this now passes.
Tests required considerable elaboration of MockRegionDataPlugin to reflect underlying storing of parts.
|
|
Previously, Scene.Inventory.DeRezObjects() forced the persistence of prims before deletion.
This is necessary so that freshly delinked prims can be deleted (otherwise they remain as parts of their old group and reappear on server restart).
However, DeRezObjects() deleted to user inventory, which is required by llDie() or direct region module unlink and deletion.
Therefore, forced persistence has been pushed down into Scene.UnlinkSceneObject() to be more general, this is still on the DeRezObjects() path.
Uncommented TestDelinkPersistence() since this now passes.
Tests required considerable elaboration of MockRegionDataPlugin to reflect underlying storing of parts.
|
|
by deletion of a linked part
This test is temporarily not running since it currently fails due to a bug in this area
|
|
Remove no-arg backup method for simplicity as it only make sense to call non-forced backup internally
|
|
linked prim
|
|
Added a MockRegionDataPlugin to do in-memory persistence for tests since adding this to OpenSim.Data.Null.NullDataStore doesn't seem appropriate
NullDataStore can do nothing because OpenSim only ever retrieve region objects from the database on startup. Adding an in-memory store here would be unecessary overhead.
|
|
|