64 bits should be enough for everybody

By CCP Creber Cattus
| Comments

tl;dr: We are changing the inventory system to use 64-bit numbers. It's a massive change with no gameplay functionality added/changed/removed. Only behind the scene changes that can break stuff! :p But this step is necessary for the growth of EVE.

For the last 6 months we have been refactoring the inventory system in the game to use 64-bit numbers.

What does that mean?

Well... every item in the game has an ID in the database. And items are not just things in your hangar, like a stack of Veldspar or a Raven, every skill in your head is for example an item, extractors on planets, agents, solar systems, regions, characters, etc... Basically almost everything is an item in EVE Online. Before this upcoming change these IDs could go up to 2,147,483,647 but after the change it can go up to 9,223,372,036,854,775,807, which is 2^63 - 1 (yes 63… we almost never use one of the bits). Just by looking at the numbers you can see how much better the new system is!



Why are we doing this (seriously)?

We exploded the 32-bit range many years ago. To work around that, we have been recycling item IDs a few months after people have deleted their stuff. For example when someone blows up your ship every item that is destroyed in the process is moved to a junkyard. The item IDs in the junkyard are then recycled after some time so the ID can be reused for some other item. Recycling item IDs has bit us in the butt in the past. Logs that points to a specific item ID become invalid (so our logs show nothing!), when new item types are added the new extra info tables may not be handled properly in the junkyard cleanup script and that has caused us problems, and earlier this year the junkyard cleanup script itself failed and caused us some headache, anyone remember the black Friday? Then seeing Incarna coming soon(TM) we expect the item growth to be even more than it is today, so we see this problem only becoming larger. The growth could also actually finish the available item IDs, leaving us with nothing to recycle and nobody could create items anymore. After this change we will stop recycling item IDs which is a very good thing... and no I don't hate the environment I just don't like recycling. We don't need to keep track of IDs that are available and an extra benefit from this is that we will know when items were created without having to have separate bookkeeping for it.

So, what’s the risks in this?

This change has been living on small internal test servers since August 15, large internal tests servers from September 2 and on SiSi since September 15. But even though we have been testing this change extensively, there might still be fallout since this change touches almost every system in the game.

On the deployment day we will be monitoring feedback, error logs, bug reports and general server health very carefully and be ready to react quickly to any issue. So deployment day is an “all hands on deck” day until we’re sure we’re sailing the smooth seas of awesome.

It will take a long time to convert all the existing data, so we expect around 14 hours of downtime when we do the upgrade. This will be time well spent though, since we will be gaining 183 trillion item IDs each second. :p

That was all,

   CCP Creber Cattus