| @@ 687-711 (lines=25) @@ | ||
| 684 | * @param \OCP\Lock\ILockingProvider $provider |
|
| 685 | * @throws \OCP\Lock\LockedException |
|
| 686 | */ |
|
| 687 | public function acquireLock($path, $type, ILockingProvider $provider) { |
|
| 688 | $logger = $this->getLockLogger(); |
|
| 689 | if ($logger) { |
|
| 690 | $typeString = ($type === ILockingProvider::LOCK_SHARED) ? 'shared' : 'exclusive'; |
|
| 691 | $logger->info( |
|
| 692 | sprintf( |
|
| 693 | 'acquire %s lock on "%s" on storage "%s"', |
|
| 694 | $typeString, |
|
| 695 | $path, |
|
| 696 | $this->getId() |
|
| 697 | ), |
|
| 698 | [ |
|
| 699 | 'app' => 'locking', |
|
| 700 | ] |
|
| 701 | ); |
|
| 702 | } |
|
| 703 | try { |
|
| 704 | $provider->acquireLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type); |
|
| 705 | } catch (LockedException $e) { |
|
| 706 | if ($logger) { |
|
| 707 | $logger->logException($e); |
|
| 708 | } |
|
| 709 | throw $e; |
|
| 710 | } |
|
| 711 | } |
|
| 712 | ||
| 713 | /** |
|
| 714 | * @param string $path |
|
| @@ 719-743 (lines=25) @@ | ||
| 716 | * @param \OCP\Lock\ILockingProvider $provider |
|
| 717 | * @throws \OCP\Lock\LockedException |
|
| 718 | */ |
|
| 719 | public function releaseLock($path, $type, ILockingProvider $provider) { |
|
| 720 | $logger = $this->getLockLogger(); |
|
| 721 | if ($logger) { |
|
| 722 | $typeString = ($type === ILockingProvider::LOCK_SHARED) ? 'shared' : 'exclusive'; |
|
| 723 | $logger->info( |
|
| 724 | sprintf( |
|
| 725 | 'release %s lock on "%s" on storage "%s"', |
|
| 726 | $typeString, |
|
| 727 | $path, |
|
| 728 | $this->getId() |
|
| 729 | ), |
|
| 730 | [ |
|
| 731 | 'app' => 'locking', |
|
| 732 | ] |
|
| 733 | ); |
|
| 734 | } |
|
| 735 | try { |
|
| 736 | $provider->releaseLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type); |
|
| 737 | } catch (LockedException $e) { |
|
| 738 | if ($logger) { |
|
| 739 | $logger->logException($e); |
|
| 740 | } |
|
| 741 | throw $e; |
|
| 742 | } |
|
| 743 | } |
|
| 744 | ||
| 745 | /** |
|
| 746 | * @param string $path |
|
| @@ 751-775 (lines=25) @@ | ||
| 748 | * @param \OCP\Lock\ILockingProvider $provider |
|
| 749 | * @throws \OCP\Lock\LockedException |
|
| 750 | */ |
|
| 751 | public function changeLock($path, $type, ILockingProvider $provider) { |
|
| 752 | $logger = $this->getLockLogger(); |
|
| 753 | if ($logger) { |
|
| 754 | $typeString = ($type === ILockingProvider::LOCK_SHARED) ? 'shared' : 'exclusive'; |
|
| 755 | $logger->info( |
|
| 756 | sprintf( |
|
| 757 | 'change lock on "%s" to %s on storage "%s"', |
|
| 758 | $path, |
|
| 759 | $typeString, |
|
| 760 | $this->getId() |
|
| 761 | ), |
|
| 762 | [ |
|
| 763 | 'app' => 'locking', |
|
| 764 | ] |
|
| 765 | ); |
|
| 766 | } |
|
| 767 | try { |
|
| 768 | $provider->changeLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type); |
|
| 769 | } catch (LockedException $e) { |
|
| 770 | if ($logger) { |
|
| 771 | $logger->logException($e); |
|
| 772 | } |
|
| 773 | throw $e; |
|
| 774 | } |
|
| 775 | } |
|
| 776 | ||
| 777 | private function getLockLogger() { |
|
| 778 | if (is_null($this->shouldLogLocks)) { |
|