TI function to prevent other chores from running
Posted: Thu Sep 18, 2008 10:12 pm
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?
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?