Skip to content

Commit c5609b7

Browse files
authored
Merge pull request #267 from guilhermeblanco/log-errors-properly
Added error logging and error messaging response when errors occur
2 parents 9fe1fe9 + ef9d8f9 commit c5609b7

File tree

6 files changed

+19
-9
lines changed

6 files changed

+19
-9
lines changed

graphql-java-kickstart/src/main/java/graphql/kickstart/execution/subscriptions/DefaultSubscriptionSession.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ public void sendDataMessage(String id, Object payload) {
5353
}
5454

5555
@Override
56-
public void sendErrorMessage(String id) {
57-
56+
public void sendErrorMessage(String id, Object payload) {
57+
send(mapper.serialize(payload));
5858
}
5959

6060
@Override

graphql-java-kickstart/src/main/java/graphql/kickstart/execution/subscriptions/SessionSubscriber.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
package graphql.kickstart.execution.subscriptions;
22

33
import graphql.ExecutionResult;
4+
5+
import java.util.Collections;
46
import java.util.HashMap;
57
import java.util.Map;
8+
9+
import graphql.GraphQLError;
10+
import graphql.kickstart.execution.error.GenericGraphQLError;
611
import lombok.RequiredArgsConstructor;
712
import lombok.extern.slf4j.Slf4j;
813
import org.reactivestreams.Subscriber;
@@ -29,15 +34,20 @@ public void onSubscribe(Subscription subscription) {
2934
public void onNext(ExecutionResult executionResult) {
3035
Map<String, Object> result = new HashMap<>();
3136
result.put("data", executionResult.getData());
37+
3238
session.sendDataMessage(id, result);
3339
subscriptionReference.get().request(1);
3440
}
3541

3642
@Override
3743
public void onError(Throwable throwable) {
3844
log.error("Subscription error", throwable);
45+
46+
Map<String, Object> payload = new HashMap<>();
47+
payload.put("errors", Collections.singletonList(new GenericGraphQLError(throwable.getMessage())));
48+
3949
session.unsubscribe(id);
40-
session.sendErrorMessage(id);
50+
session.sendErrorMessage(id, payload);
4151
}
4252

4353
@Override

graphql-java-kickstart/src/main/java/graphql/kickstart/execution/subscriptions/SubscriptionSession.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public interface SubscriptionSession {
1919

2020
void sendDataMessage(String id, Object payload);
2121

22-
void sendErrorMessage(String id);
22+
void sendErrorMessage(String id, Object payload);
2323

2424
void sendCompleteMessage(String id);
2525

graphql-java-kickstart/src/main/java/graphql/kickstart/execution/subscriptions/apollo/ApolloSubscriptionSession.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ public void sendDataMessage(String id, Object payload) {
1818
}
1919

2020
@Override
21-
public void sendErrorMessage(String id) {
22-
sendMessage(new OperationMessage(Type.GQL_ERROR, id, null));
21+
public void sendErrorMessage(String id, Object payload) {
22+
sendMessage(new OperationMessage(Type.GQL_ERROR, id, payload));
2323
}
2424

2525
@Override

graphql-java-kickstart/src/main/java/graphql/kickstart/execution/subscriptions/apollo/SubscriptionConnectionInitCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public void apply(SubscriptionSession session, OperationMessage message) {
1919
connectionListeners.forEach(it -> it.onConnect(session, message));
2020
session.sendMessage(new OperationMessage(Type.GQL_CONNECTION_ACK, message.getId(), null));
2121
} catch (Throwable t) {
22-
session.sendMessage(
23-
new OperationMessage(Type.GQL_CONNECTION_ERROR, message.getId(), t.getMessage()));
22+
log.error("Cannot initialize subscription command '{}'", message, t);
23+
session.sendMessage(new OperationMessage(Type.GQL_CONNECTION_ERROR, message.getId(), t.getMessage()));
2424
}
2525
}
2626

graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSendSubscriber.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public void onNext(String message) {
3535

3636
@Override
3737
public void onError(Throwable t) {
38-
38+
log.error("WebSocket error", t);
3939
}
4040

4141
@Override

0 commit comments

Comments
 (0)