“Tridion seems to choose random times to not check in my items and I don’t notice it until I’m well into my debugging.” I’m sure I’m not the only one who has heard this, or thought it silently to myself. Of course, everyone knows that software doesn’t often do “random”, and if you pay enough attention and get a little lucky you can usually find a pattern to when an unexpected behaviour is happening. In this case I’ve spoken to a number of experienced Tridion users and gotten some good ideas on why items might stay open.
One I can confirm is that when you open an item and then choose to save and close immediately, before it’s finished rendering, sometimes the check-out flip gets switched but check-in doesn’t. I’m suspect this is a question of threading, perhaps the check-in command is even getting fired before the check-out has gone.
However there is one scenario when Tridion1 will never check an item in when you close it. When you open an item, then manually check it in with the button in the ribbon tool bar, perhaps to publish and test a change, then manually check the same item out manually, closing will no longer trigger the a check-in, at least not until this item has been manually checked in once again. This makes sense if you think about it in the context of making changes to an item and not wanting to commit a major version that would be ready for publish. In fact, it’s a nice security feature, allowing you to make changes without fear that accidentally closing your window or having your computer restart will allow in-progress updates to be checked-in. I can’t promise that this accounts for every time Tridion unexpectedly leaves an item checked out, but since figuring out the above pattern I’ve had an almost total reduction in the number of incidents I’ve encountered. Hopefully it will help you too.
1. I haven’t tested this with SDL Web 8 so I can’t speak to whether the behaviour is the same there, but it’s been true in 2011-2013 SP1 and since I believe this behaviour is intentional I would expect it to continue in new versions.