Skip to content

Commit 2922234

Browse files
committed
Improve log around the request handlers
1 parent 09e6fa6 commit 2922234

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

src/internal/bolt/response-handler.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ const NO_OP_OBSERVER = {
3535
onCompleted: NO_OP,
3636
onError: NO_OP
3737
}
38+
let requestHandlerNextId = 0
3839

3940
/**
4041
* Treat the protocol responses and notify the observers
@@ -73,6 +74,8 @@ export default class ResponseHandler {
7374
* @param {ResponseHandler~Observer} observer Object which will be notified about errors
7475
*/
7576
constructor ({ transformMetadata, log, observer } = {}) {
77+
this._lastUpdateCurrentObserverCall = {}
78+
this._lastQueueObserverCall = {}
7679
this._pendingObservers = []
7780
this._log = log
7881
this._transformMetadata = transformMetadata || NO_OP_IDENTITY
@@ -84,6 +87,7 @@ export default class ResponseHandler {
8487
},
8588
observer
8689
)
90+
this._requestHandlerId = requestHandlerNextId++
8791
}
8892

8993
handleResponse (msg) {
@@ -102,6 +106,13 @@ export default class ResponseHandler {
102106
}
103107
try {
104108
const metadata = this._transformMetadata(payload)
109+
if (!this._currentObserver) {
110+
this._log.trace(
111+
`${this._requestHandlerId}.handleResponse(SUCCESS) current observer is undefined`,
112+
this._lastQueueObserverCall,
113+
this._lastUpdateCurrentObserverCall
114+
)
115+
}
105116
this._currentObserver.onCompleted(metadata)
106117
} finally {
107118
this._updateCurrentObserver()
@@ -151,23 +162,41 @@ export default class ResponseHandler {
151162
* @protected
152163
*/
153164
_updateCurrentObserver () {
165+
const previousObserver = this._currentObserver
154166
this._currentObserver = this._pendingObservers.shift()
167+
this._lastUpdateCurrentObserverCall = {
168+
previousObserver,
169+
currentObserver: this._currentObserver,
170+
stacktrace: new Error().stack
171+
}
155172
}
156173

157174
_queueObserver (observer) {
158175
observer = observer || NO_OP_OBSERVER
159176
observer.onCompleted = observer.onCompleted || NO_OP
160177
observer.onError = observer.onError || NO_OP
161178
observer.onNext = observer.onNext || NO_OP
179+
const previousObserver = this._currentObserver
162180
if (this._currentObserver === undefined) {
163181
this._currentObserver = observer
164182
} else {
165183
this._pendingObservers.push(observer)
166184
}
185+
this._lastQueueObserverCall = {
186+
previousObserver,
187+
observer,
188+
currentObserver: this._currentObserver,
189+
stacktrace: new Error().stack
190+
}
167191
return true
168192
}
169193

170194
_notifyErrorToObservers (error) {
195+
console.trace(
196+
`${this._requestHandlerId}._notifyErrorToObservers, this._currentObserver=`,
197+
this._currentObserver,
198+
error
199+
)
171200
if (this._currentObserver && this._currentObserver.onError) {
172201
this._currentObserver.onError(error)
173202
}

0 commit comments

Comments
 (0)