1212// See the License for the specific language governing permissions and
1313// limitations under the License.
1414
15+ import * as grpc from '@grpc/grpc-js' ;
1516import { Bigtable } from '../../../src' ;
1617import { ClientSideMetricsConfigManager } from '../../../src/client-side-metrics/metrics-config-manager' ;
1718import { IMetricsHandler } from '../../../src/client-side-metrics/metrics-handler' ;
@@ -23,10 +24,17 @@ export function createBigtableClient(bigtable: Bigtable) {
2324 const handlers : IMetricsHandler [ ] = [ ] ;
2425 bigtable . _metricsConfigManager = new ClientSideMetricsConfigManager ( handlers ) ;
2526
27+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28+ const bigtableAny = bigtable as any ;
29+
2630 // We'll store these in the Bigtable object so that we can access them from the
2731 // test proxy.
28- // eslint-disable-next-line @typescript-eslint/no-explicit-any
29- ( bigtable as any ) [ v2 ] = new BigtableClient ( bigtable . options . BigtableClient ) ;
32+ if ( bigtableAny [ v2 ] ) {
33+ throw Object . assign ( new Error ( `should not have a BigtableClient already` ) , {
34+ code : grpc . status . ALREADY_EXISTS ,
35+ } ) ;
36+ }
37+ bigtableAny [ v2 ] = new BigtableClient ( bigtable . options . BigtableClient ) ;
3038}
3139
3240export function getBigtableClient ( bigtable : Bigtable ) {
@@ -39,8 +47,7 @@ export async function deleteBigtableClient(bigtable: Bigtable) {
3947 const bigtableAny = bigtable as any ;
4048
4149 const bigtableClient = bigtableAny [ v2 ] ;
42- if ( bigtableClient ) {
43- await bigtableClient . close ( ) ;
44- delete bigtableAny [ v2 ] ;
45- }
50+ await bigtableClient . close ( ) ;
51+
52+ delete bigtableAny [ v2 ] ;
4653}
0 commit comments