50 $this->
requestLock(self::PROCESS_NAME_QUESTION_WORKING_STATE_UPDATE);
58 $this->
releaseLock(self::PROCESS_NAME_QUESTION_WORKING_STATE_UPDATE);
66 $this->
requestLock(self::PROCESS_NAME_QUESTION_WORKING_STATE_UPDATE);
74 $this->
releaseLock(self::PROCESS_NAME_QUESTION_WORKING_STATE_UPDATE);
83 $this->lockFileHandles[$processName] = fopen($lockFilePath,
'w');
84 if (!flock($this->lockFileHandles[$processName], LOCK_EX)) {
85 $this->
logger->error(
"Flock failed for {$lockFilePath}.");
95 $path = $this->lockFileStorage->getAbsolutePath();
96 return $path .
'/' . $processName .
'.lock';
104 flock($this->lockFileHandles[$processName], LOCK_UN);
105 fclose($this->lockFileHandles[$processName]);
onAfterExecutingPersistWorkingStateOperation()
{}
__construct(private ilAssQuestionProcessLockFileStorage $lockFileStorage, private ilLogger|TestLogger $logger)
getLockFilePath($processName)
requestLock($processName)
onBeforeExecutingUserSolutionAdoptOperation()
{}
onBeforeExecutingPersistWorkingStateOperation()
{}
onAfterExecutingUserSolutionAdoptOperation()
{}
releaseLock($processName)
const PROCESS_NAME_QUESTION_WORKING_STATE_UPDATE
Component logger with individual log levels by component id.