Skip to content

Commit 1804551

Browse files
authored
fix(datastore): Remove unnecessary synchronized causing subscription slowness (#2718)
1 parent c839191 commit 1804551

File tree

3 files changed

+7
-18
lines changed

3 files changed

+7
-18
lines changed

aws-api/src/androidTest/java/com/amplifyframework/api/aws/SubscriptionEndpointTest.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public final class SubscriptionEndpointTest {
5252
private SubscriptionEndpoint subscriptionEndpoint;
5353
private String eventId;
5454
private Set<String> subscriptionIdsForRelease;
55+
private ApiConfiguration apiConfiguration;
5556

5657
/**
5758
* Create an {@link SubscriptionEndpoint}.
@@ -68,7 +69,7 @@ public void setup() throws ApiException, JSONException {
6869
.getJSONObject("plugins")
6970
.getJSONObject("awsAPIPlugin");
7071
AWSApiPluginConfiguration pluginConfiguration = AWSApiPluginConfigurationReader.readFrom(configJson);
71-
ApiConfiguration apiConfiguration = pluginConfiguration.getApi(endpointConfigKey);
72+
apiConfiguration = pluginConfiguration.getApi(endpointConfigKey);
7273
assertNotNull(apiConfiguration);
7374

7475
final GraphQLResponse.Factory responseFactory = new GsonGraphQLResponseFactory();
@@ -184,6 +185,7 @@ private String subscribeToEventComments(String eventId) throws ApiException {
184185
executor.execute(() ->
185186
subscriptionEndpoint.requestSubscription(
186187
request,
188+
apiConfiguration.getAuthorizationType(),
187189
onResult,
188190
item -> {
189191
final String message;

aws-api/src/main/java/com/amplifyframework/api/aws/SubscriptionEndpoint.java

+1-15
Original file line numberDiff line numberDiff line change
@@ -103,21 +103,7 @@ final class SubscriptionEndpoint {
103103
this.okHttpClient = okHttpClientBuilder.build();
104104
}
105105

106-
synchronized <T> void requestSubscription(
107-
@NonNull GraphQLRequest<T> request,
108-
@NonNull Consumer<String> onSubscriptionStarted,
109-
@NonNull Consumer<GraphQLResponse<T>> onNextItem,
110-
@NonNull Consumer<ApiException> onSubscriptionError,
111-
@NonNull Action onSubscriptionComplete) {
112-
requestSubscription(request,
113-
apiConfiguration.getAuthorizationType(),
114-
onSubscriptionStarted,
115-
onNextItem,
116-
onSubscriptionError,
117-
onSubscriptionComplete);
118-
}
119-
120-
synchronized <T> void requestSubscription(
106+
<T> void requestSubscription(
121107
@NonNull GraphQLRequest<T> request,
122108
@NonNull AuthorizationType authType,
123109
@NonNull Consumer<String> onSubscriptionStarted,

aws-datastore/src/main/java/com/amplifyframework/datastore/syncengine/SubscriptionProcessor.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,9 @@ synchronized void startSubscriptions() throws DataStoreException {
150150
LOG.debug("Waiting for subscriptions to start.");
151151
subscriptionsStarted = latch.abortableAwait(adjustedTimeoutSeconds, TimeUnit.SECONDS);
152152
} catch (InterruptedException exception) {
153-
LOG.warn("Subscription operations were interrupted during setup.");
154-
return;
153+
String errorMessage = "Subscription operations were interrupted during setup.";
154+
LOG.warn(errorMessage);
155+
throw new DataStoreException(errorMessage, "Retry");
155156
}
156157

157158
if (subscriptionsStarted) {

0 commit comments

Comments
 (0)