@@ -552,7 +552,7 @@ public Response apply(Request.Builder funcBuilder) {
552552 return sendRequestOnce (funcBuilder .delete ().build ());
553553 }
554554 };
555- Response response = sendRequestWithRetry (requestBldr , doDeleteFunction , null );
555+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doDeleteFunction , null );
556556 int status = response .code ();
557557
558558 if (status == STATUS_NOT_FOUND ) {
@@ -655,6 +655,12 @@ private Response sendRequestOnce(Request request) {
655655 }
656656
657657 private Response sendRequestWithRetry (Request .Builder requestBldr , Function <Request .Builder , Response > doFunction , Consumer <Boolean > resendableConsumer ) {
658+ return sendRequestWithRetry (requestBldr , true , doFunction , resendableConsumer );
659+ }
660+
661+ private Response sendRequestWithRetry (
662+ Request .Builder requestBldr , boolean isRetryable , Function <Request .Builder , Response > doFunction , Consumer <Boolean > resendableConsumer
663+ ) {
658664 Response response = null ;
659665 int status = -1 ;
660666 long startTime = System .currentTimeMillis ();
@@ -674,11 +680,12 @@ private Response sendRequestWithRetry(Request.Builder requestBldr, Function<Requ
674680 */
675681 response = doFunction .apply (requestBldr );
676682 status = response .code ();
677- if (!retryStatus .contains (status )) {
683+ if (!isRetryable || ! retryStatus .contains (status )) {
678684 if (isFirstRequest ()) setFirstRequest (false );
679685 /*
680- * If we don't get a service unavailable status, we break
681- * from the retrying loop and return the response
686+ * If we don't get a service unavailable status or if the request
687+ * is not retryable, we break from the retrying loop and return
688+ * the response
682689 */
683690 break ;
684691 }
@@ -753,7 +760,8 @@ public Response apply(Request.Builder funcBuilder) {
753760 return sendRequestOnce (funcBuilder .get ().build ());
754761 }
755762 };
756- Response response = sendRequestWithRetry (requestBldr , doGetFunction , null );
763+ Response response = sendRequestWithRetry (requestBldr , (transaction == null ), doGetFunction , null );
764+
757765 int status = response .code ();
758766 if (status == STATUS_NOT_FOUND ) {
759767 throw new ResourceNotFoundException (
@@ -1029,7 +1037,7 @@ public Response apply(Request.Builder funcBuilder) {
10291037 return sendRequestOnce (funcBuilder .addHeader (HEADER_ACCEPT , multipartMixedWithBoundary ()).get ());
10301038 }
10311039 };
1032- Response response = sendRequestWithRetry (requestBldr , doGetFunction , null );
1040+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doGetFunction , null );
10331041 int status = response .code ();
10341042 if (status == STATUS_NOT_FOUND ) {
10351043 throw new ResourceNotFoundException (
@@ -1147,7 +1155,7 @@ public Response apply(Request.Builder funcBuilder) {
11471155 return sendRequestOnce (funcBuilder .head ().build ());
11481156 }
11491157 };
1150- Response response = sendRequestWithRetry (requestBldr , doHeadFunction , null );
1158+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doHeadFunction , null );
11511159 int status = response .code ();
11521160 if (status != STATUS_OK ) {
11531161 if (status == STATUS_NOT_FOUND ) {
@@ -1684,7 +1692,7 @@ public Response apply(Request.Builder funcBuilder) {
16841692 return sendRequestOnce (funcBuilder .post (RequestBody .create (null , "" )).build ());
16851693 }
16861694 };
1687- Response response = sendRequestWithRetry (requestBldr , doPostFunction , null );
1695+ Response response = sendRequestWithRetry (requestBldr , false , doPostFunction , null );
16881696 int status = response .code ();
16891697
16901698 if (status == STATUS_FORBIDDEN ) {
@@ -2285,7 +2293,7 @@ public Response apply(Request.Builder funcBuilder) {
22852293 return sendRequestOnce (funcBuilder .delete ().build ());
22862294 }
22872295 };
2288- Response response = sendRequestWithRetry (requestBldr , doDeleteFunction , null );
2296+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doDeleteFunction , null );
22892297 int status = response .code ();
22902298 if (status == STATUS_FORBIDDEN ) {
22912299 throw new ForbiddenUserException ("User is not allowed to delete" ,
@@ -2438,21 +2446,21 @@ public <T> T values(Class<T> as, ValuesDefinition valDef, String mimetype,
24382446 requestBldr = addTelemetryAgentId (requestBldr );
24392447
24402448 final HandleImplementation tempBaseHandle = baseHandle ;
2441- Function <Request .Builder , Response > doGetFunction =
2449+
2450+ Function <Request .Builder , Response > doFunction = (baseHandle == null ) ?
24422451 new Function <Request .Builder , Response >() {
24432452 public Response apply (Request .Builder funcBuilder ) {
24442453 return doGet (funcBuilder );
24452454 }
2446- };
2447- Function <Request .Builder , Response > doPostFunction =
2455+ } :
24482456 new Function <Request .Builder , Response >() {
24492457 public Response apply (Request .Builder funcBuilder ) {
24502458 return doPost (null , funcBuilder .header (HEADER_CONTENT_TYPE , tempBaseHandle .getMimetype ()),
24512459 tempBaseHandle .sendContent ());
24522460 }
24532461 };
2454- Response response = baseHandle == null ? sendRequestWithRetry ( requestBldr , doGetFunction , null )
2455- : sendRequestWithRetry (requestBldr , doPostFunction , null );
2462+
2463+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doFunction , null );
24562464 int status = response .code ();
24572465
24582466 if (status == STATUS_FORBIDDEN ) {
@@ -2502,7 +2510,7 @@ public Response apply(Request.Builder funcBuilder) {
25022510 return sendRequestOnce (funcBuilder .get ().build ());
25032511 }
25042512 };
2505- Response response = sendRequestWithRetry (requestBldr , doGetFunction , null );
2513+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doGetFunction , null );
25062514 int status = response .code ();
25072515
25082516 if (status == STATUS_FORBIDDEN ) {
@@ -2545,7 +2553,7 @@ public Response apply(Request.Builder funcBuilder) {
25452553 return sendRequestOnce (funcBuilder .get ().build ());
25462554 }
25472555 };
2548- Response response = sendRequestWithRetry (requestBldr , doGetFunction , null );
2556+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doGetFunction , null );
25492557 int status = response .code ();
25502558
25512559 if (status == STATUS_FORBIDDEN ) {
@@ -2590,7 +2598,7 @@ public Response apply(Request.Builder funcBuilder) {
25902598 return sendRequestOnce (funcBuilder .get ().build ());
25912599 }
25922600 };
2593- Response response = sendRequestWithRetry (requestBldr , doGetFunction , null );
2601+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doGetFunction , null );
25942602 int status = response .code ();
25952603
25962604 if (status != STATUS_OK ) {
@@ -3007,7 +3015,7 @@ public Response apply(Request.Builder funcBuilder) {
30073015 return doGet (funcBuilder );
30083016 }
30093017 };
3010- Response response = sendRequestWithRetry (requestBldr , doGetFunction , null );
3018+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doGetFunction , null );
30113019 int status = response .code ();
30123020 checkStatus (response , status , "read" , "resource" , path ,
30133021 ResponseStatus .OK_OR_NO_CONTENT );
@@ -3049,7 +3057,7 @@ public Response apply(Request.Builder funcBuilder) {
30493057 return doGet (funcBuilder );
30503058 }
30513059 };
3052- Response response = sendRequestWithRetry (requestBldr , doGetFunction , null );
3060+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doGetFunction , null );
30533061 int status = response .code ();
30543062 checkStatus (response , status , "read" , "resource" , path ,
30553063 ResponseStatus .OK_OR_NO_CONTENT );
@@ -3096,7 +3104,7 @@ public Response apply(Request.Builder funcBuilder) {
30963104 return doPut (reqlog , funcBuilder , inputBase .sendContent ());
30973105 }
30983106 };
3099- Response response = sendRequestWithRetry (requestBldr , doPutFunction , resendableConsumer );
3107+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doPutFunction , resendableConsumer );
31003108 int status = response .code ();
31013109
31023110 checkStatus (response , status , "write" , "resource" , path ,
@@ -3259,7 +3267,7 @@ public Response apply(Request.Builder funcBuilder) {
32593267 }
32603268 };
32613269
3262- Response response = sendRequestWithRetry (requestBldr , doPostFunction , resendableConsumer );
3270+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doPostFunction , resendableConsumer );
32633271 int status = response .code ();
32643272 checkStatus (response , status , operation , "resource" , path ,
32653273 ResponseStatus .OK_OR_CREATED_OR_NO_CONTENT );
@@ -3798,7 +3806,7 @@ public Response apply(Request.Builder funcBuilder) {
37983806 inputBase .sendContent ());
37993807 }
38003808 };
3801- Response response = sendRequestWithRetry (requestBldr , doPostFunction , resendableConsumer );
3809+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doPostFunction , resendableConsumer );
38023810 int status = response .code ();
38033811
38043812 checkStatus (response , status , "apply" , "resource" , path ,
@@ -3909,7 +3917,7 @@ public Response apply(Request.Builder funcBuilder) {
39093917 return doDelete (funcBuilder );
39103918 }
39113919 };
3912- Response response = sendRequestWithRetry (requestBldr , doDeleteFunction , null );
3920+ Response response = sendRequestWithRetry (requestBldr , ( transaction == null ), doDeleteFunction , null );
39133921 int status = response .code ();
39143922 checkStatus (response , status , "delete" , "resource" , path ,
39153923 ResponseStatus .OK_OR_NO_CONTENT );
0 commit comments