Page 1 of 1

World Evolving

Posted: Mon Oct 05, 2009 6:52 am
by John Adams
From the ChangeLog:
LethalEncounter wrote:Started a major overhaul to the storage and useage of the object containers. They are now all thread safe which allows us to stop using the readlock/writelock support which could lead to deadlocks.
I am pointing this out for 2 reasons.
  • 1. Calling out to all players to log into the TessEQ2 or LethalEncounter servers repeatedly, and beat the holy snot out of them. Do combat, quests, spells, abilities, convos, merchant transactions, etc. Heck, even /who all lists =) We need to know how stable our new code is, and help LE find any remaining locks that have yet to be converted (LE, feel free to correct my lingo, I'm just guessing there ;))

    2. Server Admins - It would be helpful if you actually reported issues with your World, if you have them, instead of just waiting for another patch. Get involved in the process of making our World a better place for all. This is a dramatic change for World intended to reduce our previous issues with deadlocking threads, but it may introduce new issues and unless we know about every single one, we'll not be able to fix them.
If you have questions about the changes, ask here. Otherwise, let us know if you run into any problems by posting in the Server Bugs forum.

Thanks!

Re: World Evolving

Posted: Mon Oct 05, 2009 10:53 am
by Arremis
What's a readlock, writelock, and deadlock? What does "thread safe" mean?

Re: World Evolving

Posted: Mon Oct 05, 2009 11:03 am
by erde
Arremis wrote:What's a readlock, writelock, and deadlock? What does "thread safe" mean?
maybe this helps to understand http://en.wikipedia.org/wiki/Thread_safety

Re: World Evolving

Posted: Mon Oct 05, 2009 11:04 am
by Scatman
Each zone that gets started up runs on its own thread. There are global lists that sometimes two or more zones need to access. This means two different threads can be trying to access the same list at one tme. If thread A is using the list and thread B wants it, then thread B must wait in line for thread A to be finished. Therefore thread B does not do anything until thread A is finished. That how locks work (very high level).

A deadlock occurs if both threads are waiting on each other to finish, therefore neither finishes and you "freeze" because both threads are waiting forever.

LE wrote up a new kickass way so hopefully, we'll never see a deadlock again :)

Re: World Evolving

Posted: Sat Oct 10, 2009 8:29 am
by Arremis
Rock on :)