Dan(Tasanar)

Moderator
Code:
4/4/2018 6:53:55 PM    Warning: Attempted to delete 0x4003BA45 "Bottle" during world save.
This action could cause inconsistent state.
It is strongly advised that the offending scripts be corrected.
   at Server.World.OnDelete(IEntity entity)
   at Server.Item.Delete()
   at Server.Item.StackWith(Mobile from, Item dropped, Boolean playSound)
   at Server.Items.BaseContainer.TryDropItem(Mobile from, Item dropped, Boolean sendFullMessage)
   at Server.Items.Container.OnDragDrop(Mobile from, Item dropped)
   at Server.Item.OnDroppedOnto(Mobile from, Item target)
   at Server.Item.DropToItem(Mobile from, Item target, Point3D p)
   at Server.Mobile.Drop(Item to, Point3D loc)
   at Server.Network.PacketHandlers.DropReq6017(NetState state, PacketReader pvSrc)
   at Server.Network.MessagePump.HandleReceive(NetState ns)
   at Server.Network.MessagePump.Slice()
   at Server.Core.Main(String[] args)

@Dexter_Lexia I was going through and cleaning up my directory when I noticed a word pad document called:
weird.png

Is this something to worry about?
 
Last edited:
World.cs
Code:
        public static bool OnDelete( IEntity entity ) {
            if ( m_Saving || m_Loading ) {
                if ( m_Saving ) {
                    AppendSafetyLog( "delete", entity );
                }

                _deleteQueue.Enqueue( entity );

                return false;
            }

While server saving threads try to remove any items, for example: trashbarrel create DeleteTimer on drag-drop for dropped items, and this timer try delete item in save time, where start work public static bool OnDelete( IEntity entity ) method.
 
It's nothing to really worry about, the inconsistent state it refers to is that it's adding an item to the World.Items table while it is being iterated for saving.

This inconsistency would be an issue with background saves, but it should be fine with the default configuration.

When items and mobiles are added or removed during load/save, they are added to a buffer queue, which is then dequeued and added to the respective World.Items or World.Mobiles table safely after the load/save is completed.

This warnings used to be much more common in the days of RunUO 2.2 and lower, because Timers used to tick during world load/save operations, so you'd see warnings for things like Blood being added when someone was attacking something just as the world saved.

The offending Delete call can be replaced with a Timer.DelayCall invocation as such;
Code:
entity.Delete();
becomes
Code:
Timer.DelayCall(entity.Delete);
 
Back