First: Unless you're a Java developer who enjoys weekend threading and locking studies, don't read this, unless you want your brain to melt. I'm primarily writing this for my own sake (because I am a Java concurrency junkie). Second: There is nothing wrong with LinkedBlockingDeque. It follows all the proper behavior of a concurrent collections class (of which I'm a big fan). The situation documented here boils down to a classic concurrency scenario I simply didn't take into account. The Exploit: The impact to my MMORPG was that a player could force his/her character to translocate over stretches of non-navigable terrain, such as bodies of water. This would constitute a major exploit. To add to the mystery, it only happened on my development platform, not on the alpha testing network (even over the same LAN). Read the rest of this entry »