Page MenuHomePhabricator

D12574.diff
No OneTemporary

D12574.diff

diff --git a/src/applications/repository/management/PhabricatorRepositoryManagementUpdateWorkflow.php b/src/applications/repository/management/PhabricatorRepositoryManagementUpdateWorkflow.php
--- a/src/applications/repository/management/PhabricatorRepositoryManagementUpdateWorkflow.php
+++ b/src/applications/repository/management/PhabricatorRepositoryManagementUpdateWorkflow.php
@@ -56,7 +56,21 @@
$lock_name = 'repository.update:'.$repository->getID();
$lock = PhabricatorGlobalLock::newLock($lock_name);
- $lock->lock();
+ try {
+ $lock->lock();
+ } catch (PhutilLockException $ex) {
+ throw new PhutilProxyException(
+ pht(
+ 'Another process is currently holding the update lock for '.
+ 'repository "%s". Repositories may only be updated by one '.
+ 'process at a time. This can happen if you are running multiple '.
+ 'copies of the daemons. This can also happen if you manually '.
+ 'update a repository while the daemons are also updating it '.
+ '(in this case, just try again in a few moments).',
+ $repository->getMonogram()),
+ $ex);
+ }
+
try {
$no_discovery = $args->getArg('no-discovery');
diff --git a/src/infrastructure/util/PhabricatorGlobalLock.php b/src/infrastructure/util/PhabricatorGlobalLock.php
--- a/src/infrastructure/util/PhabricatorGlobalLock.php
+++ b/src/infrastructure/util/PhabricatorGlobalLock.php
@@ -28,7 +28,6 @@
*/
final class PhabricatorGlobalLock extends PhutilLock {
- private $lockname;
private $conn;
private static $pool = array();
@@ -41,7 +40,7 @@
$namespace = PhabricatorLiskDAO::getStorageNamespace();
$namespace = PhabricatorHash::digestToLength($namespace, 20);
- $full_name = $namespace.'-g:'.$name;
+ $full_name = 'ph:'.$namespace.':'.$name;
$length_limit = 64;
if (strlen($full_name) > $length_limit) {
@@ -57,7 +56,6 @@
$lock = self::getLock($full_name);
if (!$lock) {
$lock = new PhabricatorGlobalLock($full_name);
- $lock->lockname = $name;
self::registerLock($lock);
}
@@ -99,7 +97,7 @@
$result = queryfx_one(
$conn,
'SELECT GET_LOCK(%s, %f)',
- 'phabricator:'.$this->lockname,
+ $this->getName(),
$wait);
$ok = head($result);
@@ -114,7 +112,7 @@
queryfx(
$this->conn,
'SELECT RELEASE_LOCK(%s)',
- 'phabricator:'.$this->lockname);
+ $this->getName());
$this->conn->close();
self::$pool[] = $this->conn;

File Metadata

Mime Type
text/plain
Expires
Sun, May 12, 3:36 AM (3 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6267409
Default Alt Text
D12574.diff (2 KB)

Event Timeline