3535import com .linkedin .restli .client .metrics .Metrics ;
3636import com .linkedin .restli .common .OperationNameGenerator ;
3737import java .util .Optional ;
38+ import java .util .concurrent .Executor ;
3839import java .util .concurrent .TimeUnit ;
3940import java .util .function .Function ;
4041import org .slf4j .Logger ;
@@ -69,16 +70,24 @@ public class ParSeqRestClient extends BatchingStrategy<RequestGroup, RestRequest
6970 private final RequestConfigProvider _requestConfigProvider ;
7071 private final boolean _d2RequestTimeoutEnabled ;
7172 private final Function <Request <?>, RequestContext > _requestContextProvider ;
73+ private final Executor _executor ;
7274
7375 ParSeqRestClient (final Client client , final RequestConfigProvider requestConfigProvider ,
74- Function <Request <?>, RequestContext > requestContextProvider , final boolean d2RequestTimeoutEnabled ) {
76+ Function <Request <?>, RequestContext > requestContextProvider , final boolean d2RequestTimeoutEnabled ,
77+ Executor executor ) {
7578 ArgumentUtil .requireNotNull (client , "client" );
7679 ArgumentUtil .requireNotNull (requestConfigProvider , "requestConfigProvider" );
7780 ArgumentUtil .requireNotNull (requestContextProvider , "requestContextProvider" );
7881 _client = client ;
7982 _requestConfigProvider = requestConfigProvider ;
8083 _requestContextProvider = requestContextProvider ;
8184 _d2RequestTimeoutEnabled = d2RequestTimeoutEnabled ;
85+ _executor = executor ;
86+ }
87+
88+ ParSeqRestClient (final Client client , final RequestConfigProvider requestConfigProvider ,
89+ Function <Request <?>, RequestContext > requestContextProvider , final boolean d2RequestTimeoutEnabled ) {
90+ this (client , requestConfigProvider , requestContextProvider , d2RequestTimeoutEnabled , DirectExecutor .getInstance ());
8291 }
8392
8493 /**
@@ -93,6 +102,7 @@ public ParSeqRestClient(final Client client) {
93102 _requestConfigProvider = RequestConfigProvider .build (new ParSeqRestliClientConfigBuilder ().build (), () -> Optional .empty ());
94103 _requestContextProvider = request -> new RequestContext ();
95104 _d2RequestTimeoutEnabled = false ;
105+ _executor = DirectExecutor .getInstance ();
96106 }
97107
98108 /**
@@ -107,6 +117,7 @@ public ParSeqRestClient(final RestClient client) {
107117 _requestConfigProvider = RequestConfigProvider .build (new ParSeqRestliClientConfigBuilder ().build (), () -> Optional .empty ());
108118 _requestContextProvider = request -> new RequestContext ();
109119 _d2RequestTimeoutEnabled = false ;
120+ _executor = DirectExecutor .getInstance ();
110121 }
111122
112123 @ Override
@@ -119,11 +130,13 @@ public <T> Promise<Response<T>> sendRequest(final Request<T> request) {
119130 @ Deprecated
120131 public <T > Promise <Response <T >> sendRequest (final Request <T > request , final RequestContext requestContext ) {
121132 final SettablePromise <Response <T >> promise = Promises .settable ();
122- try {
123- _client .sendRequest (request , requestContext , new PromiseCallbackAdapter <T >(promise ));
124- } catch (Throwable e ) {
125- promise .fail (e );
126- }
133+ _executor .execute (() -> {
134+ try {
135+ _client .sendRequest (request , requestContext , new PromiseCallbackAdapter <T >(promise ));
136+ } catch (Throwable e ) {
137+ promise .fail (e );
138+ }
139+ });
127140 return promise ;
128141 }
129142
0 commit comments