public override bool Obtain() { var blob = _azureDirectory.BlobContainer.GetBlockBlobReference(_lockFile); try { Debug.Print("AzureLock:Obtain({0}) : {1}", _lockFile, _leaseid); if (String.IsNullOrEmpty(_leaseid)) { _leaseid = blob.AcquireLease(TimeSpan.FromSeconds(60), _leaseid); Debug.Print("AzureLock:Obtain({0}): AcquireLease : {1}", _lockFile, _leaseid); // keep the lease alive by renewing every 30 seconds long interval = (long)TimeSpan.FromSeconds(30).TotalMilliseconds; _renewTimer = new Timer((obj) => { try { AzureLock al = (AzureLock)obj; al.Renew(); } catch (Exception err) { Debug.Print(err.ToString()); } }, this, interval, interval); } return(!String.IsNullOrEmpty(_leaseid)); } catch (StorageException webErr) { if (_handleWebException(blob, webErr)) { return(Obtain()); } } return(false); }
public override bool Obtain() { var blob = _azureDirectory.BlobContainer.GetBlobClient(_lockFile); try { Debug.WriteLine($"{_azureDirectory.Name} AzureLock:Obtain({_lockFile}) : {_leaseid}"); if (String.IsNullOrEmpty(_leaseid)) { var lease = blob.GetBlobLeaseClient().Acquire(TimeSpan.FromSeconds(60)); _leaseid = lease.Value.LeaseId; Debug.WriteLine($"{_azureDirectory.Name} AzureLock:Obtain({_lockFile}): AcquireLease : {_leaseid}"); // keep the lease alive by renewing every 30 seconds long interval = (long)TimeSpan.FromSeconds(30).TotalMilliseconds; _renewTimer = new Timer((obj) => { try { AzureLock al = (AzureLock)obj; al.Renew(); } catch (Exception err) { Debug.Print(err.ToString()); } }, this, interval, interval); } return(!String.IsNullOrEmpty(_leaseid)); } catch (RequestFailedException webErr) { if (_handleWebException(blob, webErr)) { return(Obtain()); } } /*catch (StorageClientException err) * { * if (_handleStorageClientException(blob, err)) * return Obtain(); * }*/ return(false); }