Skip to content

Commit aa09bfe

Browse files
chore: assert sessionSyncContext on all stream-callback handlers
Five SessionImpl handlers reachable from dispatchResponseMessage — handleSessionParamsResponse, handleSessionRefreshConfigResponse, handleGoAwayResponse, handleUnknownResponseMessage — and the dispatchStreamClosed entry point were missing the throwIfNotInThisSynchronizationContext assertion that the other handlers already have. The assertions are strictly redundant today (every caller is either dispatchResponseMessage, which already asserts, or sessionSyncContext.execute), but the asymmetry is incidental and adding them uniformly documents the threading contract and guards against future direct callers.
1 parent 5312d04 commit aa09bfe

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

  • java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/session

java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/session/SessionImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,7 @@ private void handleOpenSessionResponse(OpenSessionResponse openSession) {
538538
}
539539

540540
private void handleSessionParamsResponse(SessionParametersResponse resp) {
541+
sessionSyncContext.throwIfNotInThisSynchronizationContext();
541542
if (state.phase >= SessionState.CLOSING.phase) {
542543
logger.fine(String.format("Stream was already %s when session params were received", state));
543544
return;
@@ -615,6 +616,7 @@ private void handleHeartBeatResponse(HeartbeatResponse ignored) {
615616
}
616617

617618
private void handleSessionRefreshConfigResponse(SessionRefreshConfig config) {
619+
sessionSyncContext.throwIfNotInThisSynchronizationContext();
618620
Metadata grpcMetadata = new Metadata();
619621
config
620622
.getMetadataList()
@@ -679,6 +681,7 @@ private void handleVRpcErrorResponse(ErrorResponse error) {
679681
}
680682

681683
private void handleGoAwayResponse(GoAwayResponse goAwayResponse) {
684+
sessionSyncContext.throwIfNotInThisSynchronizationContext();
682685
if (state.phase >= SessionState.CLOSING.phase) {
683686
debugTagTracer.record(TelemetryConfiguration.Level.WARN, "session_go_away_ignored");
684687
logger.warning(
@@ -707,11 +710,13 @@ private void handleGoAwayResponse(GoAwayResponse goAwayResponse) {
707710
}
708711

709712
private void handleUnknownResponseMessage(SessionResponse message) {
713+
sessionSyncContext.throwIfNotInThisSynchronizationContext();
710714
debugTagTracer.record(TelemetryConfiguration.Level.WARN, "session_unknown_response");
711715
logger.warning(String.format("%s Unknown control message: %s", info.getLogName(), message));
712716
}
713717

714718
private void dispatchStreamClosed(Status status, Metadata trailers) {
719+
sessionSyncContext.throwIfNotInThisSynchronizationContext();
715720
SessionState prevState = state;
716721

717722
if (!status.isOk()) {

0 commit comments

Comments
 (0)