@@ -360,7 +360,12 @@ export class ObjectExplorerService {
360
360
private handleExpandSessionNotification ( ) : NotificationHandler < ExpandResponse > {
361
361
const self = this ;
362
362
const handler = ( result : ExpandResponse ) => {
363
- if ( result && result . nodes ) {
363
+ if ( ! result ) {
364
+ return undefined ;
365
+ }
366
+
367
+ if ( result . nodes && ! result . errorMessage ) {
368
+ // successfully received children from SQL Tools Service
364
369
const credentials =
365
370
self . _sessionIdToConnectionCredentialsMap . get (
366
371
result . sessionId ,
@@ -402,6 +407,40 @@ export class ObjectExplorerService {
402
407
return ;
403
408
}
404
409
}
410
+ } else {
411
+ // failure to expand node; display error
412
+
413
+ if ( result . errorMessage ) {
414
+ self . _connectionManager . vscodeWrapper . showErrorMessage (
415
+ result . errorMessage ,
416
+ ) ;
417
+ }
418
+
419
+ const expandParams : ExpandParams = {
420
+ sessionId : result . sessionId ,
421
+ nodePath : result . nodePath ,
422
+ } ;
423
+ const parentNode = self . getParentFromExpandParams ( expandParams ) ;
424
+
425
+ const errorNode = new vscode . TreeItem (
426
+ LocalizedConstants . ObjectExplorer . ErrorLoadingRefreshToTryAgain ,
427
+ TreeItemCollapsibleState . None ,
428
+ ) ;
429
+
430
+ self . _treeNodeToChildrenMap . set ( parentNode , [ errorNode ] ) ;
431
+
432
+ for ( let key of self . _expandParamsToPromiseMap . keys ( ) ) {
433
+ if (
434
+ key . sessionId === expandParams . sessionId &&
435
+ key . nodePath === expandParams . nodePath
436
+ ) {
437
+ let promise = self . _expandParamsToPromiseMap . get ( key ) ;
438
+ promise . resolve ( [ errorNode as TreeNodeInfo ] ) ;
439
+ self . _expandParamsToPromiseMap . delete ( key ) ;
440
+ self . _expandParamsToTreeNodeInfoMap . delete ( key ) ;
441
+ return ;
442
+ }
443
+ }
405
444
}
406
445
} ;
407
446
return handler ;
0 commit comments