What's your longest running time (without restart) in production/deployment?

Hi,

great question! Here’s my two cents:

  • I once ran an installation for longer than 25 days and suddenly it started to misbehave. Menu’s would not close, timers were off. I was puzzled, because I could not reproduce the bug. Until it finally dawned to me that the internal clock, which represented milliseconds since last boot, used a signed 32-bit integer. After 25 days, it rolled around and became negative, but most of my code assumed the value would be positive. It’s stuff like that which is really hard to debug.
  • The Timeline class uses floats internally. As you may know, floating point numbers have the best resolution around zero. The larger the value, the lower the resolution becomes. If you add 0.1f to a value of 1.0f, the result will be a value very close to 1.1f. But if you add 0.1f to 1000000.0f, the result will be more like 1000000.7f (example, not for realsies). That’s why, after a while, Timeline based applications begin to stutter. If you’d use doubles instead of floats, you probably would not have that problem, or at least it would take far longer before you’d see any stutters. So maybe it’s time for a rewrite, Cinder folks? *)
  • I also have the habit of restarting my installations at least once per 24 hours. This has nothing to do with Cinder, but more with Windows. It tends to slow down after a while and a fresh restart can solve most of your problems. Once a day is overkill, but once a week might not be enough. Although I have very limited experience with Linux, I think it does not exhibit the same problems and you can run it for far longer periods.

-Paul

*) Alternatively, you can reset the Timeline, for example when all animations are finished. The clock will be reset to zero and gone are the stutters.

Edit:
1.0f + 0.1f = 1.10000002f
1000000.0f + 0.1f = 1000000.13f.

2 Likes