"- fixed error prefenting updating of locks

- added constant do enable debuging of locks"
This commit is contained in:
Ralf Becker 2009-10-13 21:05:09 +00:00
parent c0eec4aa07
commit c4e9e875a2

View File

@ -596,6 +596,7 @@ class egw_vfs extends vfs_stream_wrapper
if (isset($options['name_preg']) && !preg_match($options['name_preg'],$stat['name']) || if (isset($options['name_preg']) && !preg_match($options['name_preg'],$stat['name']) ||
isset($options['path_preg']) && !preg_match($options['path_preg'],$path)) isset($options['path_preg']) && !preg_match($options['path_preg'],$path))
{ {
//echo "<p>!preg_match('{$options['name_preg']}','{$stat['name']}')</p>\n";
return; // wrong name or path return; // wrong name or path
} }
if (isset($options['gid']) && $stat['gid'] != $options['gid'] || if (isset($options['gid']) && $stat['gid'] != $options['gid'] ||
@ -1171,6 +1172,12 @@ class egw_vfs extends vfs_stream_wrapper
*/ */
static protected $lock_cache; static protected $lock_cache;
/**
* Log (to error log) all calls to lock(), unlock() or checkLock()
*
*/
const LOCK_DEBUG = false;
/** /**
* lock a ressource/path * lock a ressource/path
* *
@ -1204,7 +1211,7 @@ class egw_vfs extends vfs_stream_wrapper
if (($ret = (boolean)($row = self::$db->select(self::LOCK_TABLE,array('lock_owner','lock_exclusive','lock_write'),array( if (($ret = (boolean)($row = self::$db->select(self::LOCK_TABLE,array('lock_owner','lock_exclusive','lock_write'),array(
'lock_path' => $path, 'lock_path' => $path,
'lock_token' => $token, 'lock_token' => $token,
))))) ),__LINE__,__FILE__)->fetch())))
{ {
$owner = $row['lock_owner']; $owner = $row['lock_owner'];
$scope = egw_db::from_bool($row['lock_exclusive']) ? 'exclusive' : 'shared'; $scope = egw_db::from_bool($row['lock_exclusive']) ? 'exclusive' : 'shared';
@ -1214,8 +1221,8 @@ class egw_vfs extends vfs_stream_wrapper
'lock_expires' => $timeout, 'lock_expires' => $timeout,
'lock_modified' => time(), 'lock_modified' => time(),
),array( ),array(
'path' => $path, 'lock_path' => $path,
'token' => $token, 'lock_token' => $token,
),__LINE__,__FILE__); ),__LINE__,__FILE__);
} }
} }
@ -1253,7 +1260,7 @@ class egw_vfs extends vfs_stream_wrapper
$ret = false; // there's already a lock $ret = false; // there's already a lock
} }
} }
//error_log(__METHOD__."($path,$token,$timeout,$owner,$scope,$type,$update,$check_writable) returns ".($ret ? 'true' : 'false')); if (self::LOCK_DEBUG) error_log(__METHOD__."($path,$token,$timeout,$owner,$scope,$type,update=$update,check_writable=$check_writable) returns ".($ret ? 'true' : 'false'));
return $ret; return $ret;
} }
@ -1280,7 +1287,7 @@ class egw_vfs extends vfs_stream_wrapper
// remove the lock from the cache too // remove the lock from the cache too
unset(self::$lock_cache[$path]); unset(self::$lock_cache[$path]);
} }
//error_log(__METHOD__."($path,$token,$check_writable) returns ".($ret ? 'true' : 'false')); if (self::LOCK_DEBUG) error_log(__METHOD__."($path,$token,$check_writable) returns ".($ret ? 'true' : 'false'));
return $ret; return $ret;
} }
@ -1294,7 +1301,7 @@ class egw_vfs extends vfs_stream_wrapper
{ {
if (isset(self::$lock_cache[$path])) if (isset(self::$lock_cache[$path]))
{ {
//error_log(__METHOD__."($path) returns from CACHE ".str_replace(array("\n",' '),'',print_r(self::$lock_cache[$path],true))); if (self::LOCK_DEBUG) error_log(__METHOD__."($path) returns from CACHE ".str_replace(array("\n",' '),'',print_r(self::$lock_cache[$path],true)));
return self::$lock_cache[$path]; return self::$lock_cache[$path];
} }
$where = 'lock_path='.self::$db->quote($path); $where = 'lock_path='.self::$db->quote($path);
@ -1315,10 +1322,10 @@ class egw_vfs extends vfs_stream_wrapper
'lock_token' => $result['token'], 'lock_token' => $result['token'],
),__LINE__,__FILE__); ),__LINE__,__FILE__);
//error_log(__METHOD__."($path) lock is expired at ".date('Y-m-d H:i:s',$result['expires'])." --> removed"); if (self::LOCK_DEBUG) error_log(__METHOD__."($path) lock is expired at ".date('Y-m-d H:i:s',$result['expires'])." --> removed");
$result = false; $result = false;
} }
//error_log(__METHOD__."($path) returns ".($result?array2string($result):'false')); if (self::LOCK_DEBUG) error_log(__METHOD__."($path) returns ".($result?array2string($result):'false'));
return self::$lock_cache[$path] = $result; return self::$lock_cache[$path] = $result;
} }