Page 1 of 1

TI function to prevent other chores from running

Posted: Thu Sep 18, 2008 10:12 pm
by Alan Kirk
Once again yesterday I had a situation where a chore ran a little bit longer than it should have, and in the meantime a further, scheduled, chore triggered itself off.

The chores didn't conflict exactly, except in one area... the scheduled chore did what it was supposed to do when it was finished, which was to turn logging back ON on all of the cubes that it affected.

The problem is that it did so while the first chore was still writing to that cube, and the result was a 73 meg log file.

To my mind this situation (and worse situations, where there really IS a data conflict) would best be resolved by having a TI function named something like "NoChoreExecution". If set to 1, this will set a flag in the system. Any other chores, whether scheduled or triggered manually by someone else, will check for that flag and if it's set, patiently wait their turn rather than barging in and possibly conflicting with the running chore.

Obviously the ability to kill the running process/chore via TM1 top would need to be retained.

Yes, I'm aware that this is a risky improvement to ask for since Iboglix's track record on concurrent chores is a worry. Nonetheless, I think it would be a desirable enhancement.

The only other issue I can trhink of would be with people who no longer use chores but rather do a series of ExecuteProcess calls from a single Process; in such cases I'd suggest that this could be still implemented by TM1 checking whether the process had been called from a chore; if it isn't, treat that single process as if it were a chore and reset the flag when it finishes executing.

Thoughts, suggestions?

Re: TI function to prevent other chores from running

Posted: Sat Sep 20, 2008 5:00 pm
by Mike L
Since you ask, yes, I do have thoughts on this. I have had several conversations on the underlying issue, ranging from dry academic discussion to pounding-on-the-table argument with IT folk.

Bottom line: There is no substitute for a job control process that takes job status into account. Relying on the clock to resolve logical dependency or resource contention is sheer folly.

Using a master process that calls ExecuteProcess is a workable, if cumbersome approach. Having an "everybody wait for me" feature could be a useful band-aid.

Re: TI function to prevent other chores from running

Posted: Wed Sep 24, 2008 8:47 am
by Steve Vincent
Sounds a good plan to me, has caught us out a few times before too and would be an easy enough solution.