@@ -1467,29 +1467,35 @@ export class Server {
1467
1467
this . keepaliveTrace (
1468
1468
'Sending ping with timeout ' + this . keepaliveTimeoutMs + 'ms'
1469
1469
) ;
1470
- const pingSentSuccessfully = session . ping (
1471
- ( err : Error | null , duration : number , payload : Buffer ) => {
1472
- clearKeepaliveTimeout ( ) ;
1473
- if ( err ) {
1474
- this . keepaliveTrace ( 'Ping failed with error: ' + err . message ) ;
1475
- this . trace (
1476
- 'Connection dropped due to error of a ping frame ' +
1477
- err . message +
1478
- ' return in ' +
1479
- duration
1480
- ) ;
1481
- sessionClosedByServer = true ;
1482
- session . close ( ) ;
1483
- } else {
1484
- this . keepaliveTrace ( 'Received ping response' ) ;
1485
- maybeStartKeepalivePingTimer ( ) ;
1470
+ let pingSendError = '' ;
1471
+ try {
1472
+ const pingSentSuccessfully = session . ping (
1473
+ ( err : Error | null , duration : number , payload : Buffer ) => {
1474
+ clearKeepaliveTimeout ( ) ;
1475
+ if ( err ) {
1476
+ this . keepaliveTrace ( 'Ping failed with error: ' + err . message ) ;
1477
+ sessionClosedByServer = true ;
1478
+ session . close ( ) ;
1479
+ } else {
1480
+ this . keepaliveTrace ( 'Received ping response' ) ;
1481
+ maybeStartKeepalivePingTimer ( ) ;
1482
+ }
1486
1483
}
1484
+ ) ;
1485
+ if ( ! pingSentSuccessfully ) {
1486
+ pingSendError = 'Ping returned false' ;
1487
1487
}
1488
- ) ;
1488
+ } catch ( e ) {
1489
+ // grpc/grpc-node#2139
1490
+ pingSendError =
1491
+ ( e instanceof Error ? e . message : '' ) || 'Unknown error' ;
1492
+ }
1489
1493
1490
- if ( ! pingSentSuccessfully ) {
1491
- this . keepaliveTrace ( 'Ping failed to send' ) ;
1492
- this . trace ( 'Connection dropped due to failure to send ping frame' ) ;
1494
+ if ( pingSendError ) {
1495
+ this . keepaliveTrace ( 'Ping send failed: ' + pingSendError ) ;
1496
+ this . trace (
1497
+ 'Connection dropped due to ping send error: ' + pingSendError
1498
+ ) ;
1493
1499
sessionClosedByServer = true ;
1494
1500
session . close ( ) ;
1495
1501
return ;
@@ -1650,32 +1656,42 @@ export class Server {
1650
1656
this . keepaliveTrace (
1651
1657
'Sending ping with timeout ' + this . keepaliveTimeoutMs + 'ms'
1652
1658
) ;
1653
- const pingSentSuccessfully = session . ping (
1654
- ( err : Error | null , duration : number , payload : Buffer ) => {
1655
- clearKeepaliveTimeout ( ) ;
1656
- if ( err ) {
1657
- this . keepaliveTrace ( 'Ping failed with error: ' + err . message ) ;
1658
- this . channelzTrace . addTrace (
1659
- 'CT_INFO' ,
1660
- 'Connection dropped due to error of a ping frame ' +
1661
- err . message +
1662
- ' return in ' +
1663
- duration
1664
- ) ;
1665
- sessionClosedByServer = true ;
1666
- session . close ( ) ;
1667
- } else {
1668
- this . keepaliveTrace ( 'Received ping response' ) ;
1669
- maybeStartKeepalivePingTimer ( ) ;
1659
+ let pingSendError = '' ;
1660
+ try {
1661
+ const pingSentSuccessfully = session . ping (
1662
+ ( err : Error | null , duration : number , payload : Buffer ) => {
1663
+ clearKeepaliveTimeout ( ) ;
1664
+ if ( err ) {
1665
+ this . keepaliveTrace ( 'Ping failed with error: ' + err . message ) ;
1666
+ this . channelzTrace . addTrace (
1667
+ 'CT_INFO' ,
1668
+ 'Connection dropped due to error of a ping frame ' +
1669
+ err . message +
1670
+ ' return in ' +
1671
+ duration
1672
+ ) ;
1673
+ sessionClosedByServer = true ;
1674
+ session . close ( ) ;
1675
+ } else {
1676
+ this . keepaliveTrace ( 'Received ping response' ) ;
1677
+ maybeStartKeepalivePingTimer ( ) ;
1678
+ }
1670
1679
}
1680
+ ) ;
1681
+ if ( ! pingSentSuccessfully ) {
1682
+ pingSendError = 'Ping returned false' ;
1671
1683
}
1672
- ) ;
1684
+ } catch ( e ) {
1685
+ // grpc/grpc-node#2139
1686
+ pingSendError =
1687
+ ( e instanceof Error ? e . message : '' ) || 'Unknown error' ;
1688
+ }
1673
1689
1674
- if ( ! pingSentSuccessfully ) {
1675
- this . keepaliveTrace ( 'Ping failed to send' ) ;
1690
+ if ( pingSendError ) {
1691
+ this . keepaliveTrace ( 'Ping send failed: ' + pingSendError ) ;
1676
1692
this . channelzTrace . addTrace (
1677
1693
'CT_INFO' ,
1678
- 'Connection dropped due failure to send ping frame'
1694
+ 'Connection dropped due to ping send error: ' + pingSendError
1679
1695
) ;
1680
1696
sessionClosedByServer = true ;
1681
1697
session . close ( ) ;
0 commit comments