@@ -44,10 +44,15 @@ public class BlobLeaseClient
4444 /// </summary>
4545 public Uri Uri => BlobClient ? . Uri ?? BlobContainerClient ? . Uri ;
4646
47+ private string _leaseId ;
4748 /// <summary>
4849 /// Gets the Lease ID for this lease.
4950 /// </summary>
50- public virtual string LeaseId { get ; private set ; }
51+ public virtual string LeaseId
52+ {
53+ get => Volatile . Read ( ref _leaseId ) ;
54+ private set => Volatile . Write ( ref _leaseId , value ) ;
55+ }
5156
5257 /// <summary>
5358 /// The <see cref="HttpPipeline"/> transport pipeline used to send
@@ -299,13 +304,14 @@ private async Task<Response<BlobLease>> AcquireInternal(
299304 tagCondition = leaseConditions ? . TagConditions ;
300305 }
301306
307+ Response < BlobLease > response ;
302308 if ( BlobClient != null )
303309 {
304- ResponseWithHeaders < BlobAcquireLeaseHeaders > response ;
310+ ResponseWithHeaders < BlobAcquireLeaseHeaders > blobClientResponse ;
305311
306312 if ( async)
307313 {
308- response = await BlobClient . BlobRestClient . AcquireLeaseAsync (
314+ blobClientResponse = await BlobClient . BlobRestClient . AcquireLeaseAsync (
309315 duration : serviceDuration ,
310316 proposedLeaseId : LeaseId ,
311317 ifModifiedSince : conditions ? . IfModifiedSince ,
@@ -318,7 +324,7 @@ private async Task<Response<BlobLease>> AcquireInternal(
318324 }
319325 else
320326 {
321- response = BlobClient. BlobRestClient . AcquireLease (
327+ blobClientResponse = BlobClient. BlobRestClient . AcquireLease (
322328 duration : serviceDuration ,
323329 proposedLeaseId : LeaseId ,
324330 ifModifiedSince : conditions ? . IfModifiedSince ,
@@ -329,9 +335,9 @@ private async Task<Response<BlobLease>> AcquireInternal(
329335 cancellationToken : cancellationToken ) ;
330336 }
331337
332- return Response. FromValue (
333- response . ToBlobLease ( ) ,
334- response . GetRawResponse ( ) ) ;
338+ response = Response. FromValue (
339+ blobClientResponse . ToBlobLease ( ) ,
340+ blobClientResponse . GetRawResponse ( ) ) ;
335341 }
336342 else
337343 {
@@ -342,11 +348,11 @@ private async Task<Response<BlobLease>> AcquireInternal(
342348 nameof ( conditions . IfNoneMatch ) ) ;
343349 }
344350
345- ResponseWithHeaders< ContainerAcquireLeaseHeaders > response ;
351+ ResponseWithHeaders< ContainerAcquireLeaseHeaders > containerClientResponse ;
346352
347353 if ( async)
348354 {
349- response = await BlobContainerClient . ContainerRestClient . AcquireLeaseAsync (
355+ containerClientResponse = await BlobContainerClient . ContainerRestClient . AcquireLeaseAsync (
350356 duration : serviceDuration ,
351357 proposedLeaseId : LeaseId ,
352358 ifModifiedSince : conditions ? . IfModifiedSince ,
@@ -356,18 +362,20 @@ private async Task<Response<BlobLease>> AcquireInternal(
356362 }
357363 else
358364 {
359- response = BlobContainerClient. ContainerRestClient . AcquireLease (
365+ containerClientResponse = BlobContainerClient. ContainerRestClient . AcquireLease (
360366 duration : serviceDuration ,
361367 proposedLeaseId : LeaseId ,
362368 ifModifiedSince : conditions ? . IfModifiedSince ,
363369 ifUnmodifiedSince : conditions ? . IfUnmodifiedSince ,
364370 cancellationToken : cancellationToken ) ;
365371 }
366372
367- return Response. FromValue (
368- response . ToBlobLease ( ) ,
369- response . GetRawResponse ( ) ) ;
373+ response = Response. FromValue (
374+ containerClientResponse . ToBlobLease ( ) ,
375+ containerClientResponse . GetRawResponse ( ) ) ;
370376 }
377+ LeaseId = response. Value . LeaseId ;
378+ return response;
371379 }
372380 catch ( Exception ex )
373381 {
@@ -518,13 +526,14 @@ private async Task<Response<BlobLease>> RenewInternal(
518526 tagConditions = ( ( BlobLeaseRequestConditions ) conditions ) . TagConditions ;
519527 }
520528
529+ Response < BlobLease > response ;
521530 if ( BlobClient != null )
522531 {
523- ResponseWithHeaders < BlobRenewLeaseHeaders > response ;
532+ ResponseWithHeaders < BlobRenewLeaseHeaders > blobClientResponse ;
524533
525534 if ( async)
526535 {
527- response = await BlobClient . BlobRestClient . RenewLeaseAsync (
536+ blobClientResponse = await BlobClient . BlobRestClient . RenewLeaseAsync (
528537 leaseId : LeaseId ,
529538 ifModifiedSince : conditions ? . IfModifiedSince ,
530539 ifUnmodifiedSince : conditions ? . IfUnmodifiedSince ,
@@ -536,7 +545,7 @@ private async Task<Response<BlobLease>> RenewInternal(
536545 }
537546 else
538547 {
539- response = BlobClient. BlobRestClient . RenewLease (
548+ blobClientResponse = BlobClient. BlobRestClient . RenewLease (
540549 leaseId : LeaseId ,
541550 ifModifiedSince : conditions ? . IfModifiedSince ,
542551 ifUnmodifiedSince : conditions ? . IfUnmodifiedSince ,
@@ -546,9 +555,9 @@ private async Task<Response<BlobLease>> RenewInternal(
546555 cancellationToken : cancellationToken ) ;
547556 }
548557
549- return Response. FromValue (
550- response . ToBlobLease ( ) ,
551- response . GetRawResponse ( ) ) ;
558+ response = Response. FromValue (
559+ blobClientResponse . ToBlobLease ( ) ,
560+ blobClientResponse . GetRawResponse ( ) ) ;
552561 }
553562 else
554563 {
@@ -559,11 +568,11 @@ private async Task<Response<BlobLease>> RenewInternal(
559568 nameof ( conditions . IfNoneMatch ) ) ;
560569 }
561570
562- ResponseWithHeaders< ContainerRenewLeaseHeaders > response ;
571+ ResponseWithHeaders< ContainerRenewLeaseHeaders > containerClientResponse ;
563572
564573 if ( async)
565574 {
566- response = await BlobContainerClient . ContainerRestClient . RenewLeaseAsync (
575+ containerClientResponse = await BlobContainerClient . ContainerRestClient . RenewLeaseAsync (
567576 leaseId : LeaseId ,
568577 ifModifiedSince : conditions ? . IfModifiedSince ,
569578 ifUnmodifiedSince : conditions ? . IfUnmodifiedSince ,
@@ -572,17 +581,20 @@ private async Task<Response<BlobLease>> RenewInternal(
572581 }
573582 else
574583 {
575- response = BlobContainerClient. ContainerRestClient . RenewLease (
584+ containerClientResponse = BlobContainerClient . ContainerRestClient . RenewLease (
576585 leaseId : LeaseId ,
577586 ifModifiedSince : conditions ? . IfModifiedSince ,
578587 ifUnmodifiedSince : conditions ? . IfUnmodifiedSince ,
579588 cancellationToken : cancellationToken ) ;
580589 }
581590
582- return Response. FromValue (
583- response . ToBlobLease ( ) ,
584- response . GetRawResponse ( ) ) ;
591+ response = Response. FromValue (
592+ containerClientResponse . ToBlobLease ( ) ,
593+ containerClientResponse . GetRawResponse ( ) ) ;
585594 }
595+
596+ LeaseId = response. Value . LeaseId ;
597+ return response;
586598 }
587599 catch ( Exception ex )
588600 {
@@ -960,13 +972,14 @@ private async Task<Response<BlobLease>> ChangeInternal(
960972 tagCondition = ( ( BlobLeaseRequestConditions ) conditions ) . TagConditions ;
961973 }
962974
975+ Response < BlobLease > response ;
963976 if ( BlobClient != null )
964977 {
965- ResponseWithHeaders < BlobChangeLeaseHeaders > response ;
978+ ResponseWithHeaders < BlobChangeLeaseHeaders > blobClientResponse ;
966979
967980 if ( async)
968981 {
969- response = await BlobClient . BlobRestClient . ChangeLeaseAsync (
982+ blobClientResponse = await BlobClient . BlobRestClient . ChangeLeaseAsync (
970983 leaseId : LeaseId ,
971984 proposedLeaseId : proposedId ,
972985 ifModifiedSince : conditions ? . IfModifiedSince ,
@@ -979,7 +992,7 @@ private async Task<Response<BlobLease>> ChangeInternal(
979992 }
980993 else
981994 {
982- response = BlobClient. BlobRestClient . ChangeLease (
995+ blobClientResponse = BlobClient. BlobRestClient . ChangeLease (
983996 leaseId : LeaseId ,
984997 proposedLeaseId : proposedId ,
985998 ifModifiedSince : conditions ? . IfModifiedSince ,
@@ -990,9 +1003,9 @@ private async Task<Response<BlobLease>> ChangeInternal(
9901003 cancellationToken : cancellationToken ) ;
9911004 }
9921005
993- return Response. FromValue (
994- response . ToBlobLease ( ) ,
995- response . GetRawResponse ( ) ) ;
1006+ response = Response. FromValue (
1007+ blobClientResponse . ToBlobLease ( ) ,
1008+ blobClientResponse . GetRawResponse ( ) ) ;
9961009 }
9971010 else
9981011 {
@@ -1003,11 +1016,11 @@ private async Task<Response<BlobLease>> ChangeInternal(
10031016 nameof ( conditions . IfNoneMatch ) ) ;
10041017 }
10051018
1006- ResponseWithHeaders< ContainerChangeLeaseHeaders > response ;
1019+ ResponseWithHeaders< ContainerChangeLeaseHeaders > containerClientResponse ;
10071020
10081021 if ( async)
10091022 {
1010- response = await BlobContainerClient . ContainerRestClient . ChangeLeaseAsync (
1023+ containerClientResponse = await BlobContainerClient . ContainerRestClient . ChangeLeaseAsync (
10111024 leaseId : LeaseId ,
10121025 proposedLeaseId : proposedId ,
10131026 ifModifiedSince : conditions ? . IfModifiedSince ,
@@ -1017,18 +1030,21 @@ private async Task<Response<BlobLease>> ChangeInternal(
10171030 }
10181031 else
10191032 {
1020- response = BlobContainerClient. ContainerRestClient . ChangeLease (
1033+ containerClientResponse = BlobContainerClient. ContainerRestClient . ChangeLease (
10211034 leaseId : LeaseId ,
10221035 proposedLeaseId : proposedId ,
10231036 ifModifiedSince : conditions ? . IfModifiedSince ,
10241037 ifUnmodifiedSince : conditions ? . IfUnmodifiedSince ,
10251038 cancellationToken : cancellationToken ) ;
10261039 }
10271040
1028- return Response. FromValue (
1029- response . ToBlobLease ( ) ,
1030- response . GetRawResponse ( ) ) ;
1041+ response = Response. FromValue (
1042+ containerClientResponse . ToBlobLease ( ) ,
1043+ containerClientResponse . GetRawResponse ( ) ) ;
10311044 }
1045+
1046+ LeaseId = response. Value . LeaseId ;
1047+ return response;
10321048 }
10331049 catch ( Exception ex )
10341050 {
0 commit comments