} else {
Wikimedia\suppressWarnings();
$handle = fopen( $this->getLockPath( $path ), 'a+' );
- if ( !$handle ) { // lock dir missing?
- mkdir( $this->lockDir, 0777, true );
- $handle = fopen( $this->getLockPath( $path ), 'a+' ); // try again
+ if ( !$handle && !is_dir( $this->lockDir ) ) {
+ // Create the lock directory in case it is missing
+ if ( mkdir( $this->lockDir, 0777, true ) ) {
+ $handle = fopen( $this->getLockPath( $path ), 'a+' ); // try again
+ } else {
+ $this->logger->error( "Cannot create directory '{$this->lockDir}'." );
+ }
}
Wikimedia\restoreWarnings();
}
if ( $this->locksHeld[$path][$type] <= 0 ) {
unset( $this->locksHeld[$path][$type] );
}
- if ( !count( $this->locksHeld[$path] ) ) {
+ if ( $this->locksHeld[$path] === [] ) {
unset( $this->locksHeld[$path] ); // no locks on this path
if ( isset( $this->handles[$path] ) ) {
$handlesToClose[] = $this->handles[$path];