@@ -19,6 +19,7 @@ import { DBInstance, DocumentDBClient } from '../../shared/clients/docdbClient'
1919import { DocDBContext } from './docdbContext'
2020import { toTitleCase } from '../../shared'
2121import { getAwsConsoleUrl } from '../../shared/awsConsole'
22+ import { getLogger } from '../../shared/logger'
2223
2324export type DBClusterRole = 'global' | 'regional' | 'primary' | 'secondary'
2425
@@ -31,6 +32,7 @@ export class DBClusterNode extends DBResourceNode {
3132 override name = this . cluster . DBClusterIdentifier !
3233 override arn = this . cluster . DBClusterArn !
3334 public instances : DBInstance [ ] = [ ]
35+ private childNodes : DBInstanceNode [ ] = [ ]
3436
3537 constructor (
3638 public readonly parent : AWSTreeNodeBase ,
@@ -39,6 +41,7 @@ export class DBClusterNode extends DBResourceNode {
3941 readonly clusterRole : DBClusterRole = 'regional'
4042 ) {
4143 super ( client , cluster . DBClusterIdentifier ?? '[Cluster]' , vscode . TreeItemCollapsibleState . Collapsed )
44+ getLogger ( ) . info ( `NEW DBClusterNode: ${ cluster . DBClusterArn } ` )
4245 this . arn = cluster . DBClusterArn ?? ''
4346 this . name = cluster . DBClusterIdentifier ?? ''
4447 this . contextValue = this . getContext ( )
@@ -47,10 +50,16 @@ export class DBClusterNode extends DBResourceNode {
4750 )
4851 this . description = this . getDescription ( )
4952 this . tooltip = `${ this . name } ${ os . EOL } Engine: ${ this . cluster . EngineVersion } ${ os . EOL } Status: ${ this . cluster . Status } `
53+ this . trackChanges ( )
5054 }
5155
5256 public override async getChildren ( ) : Promise < AWSTreeNodeBase [ ] > {
5357 return telemetry . docdb_listInstances . run ( async ( ) => {
58+ this . childNodes . forEach ( ( node ) => {
59+ getLogger ( ) . info ( `(getChildren) Removing Polling from node: ${ node . arn } ` )
60+ node . pollingSet . delete ( node . arn )
61+ node . pollingSet . clearTimer ( )
62+ } )
5463 return await makeChildrenNodes ( {
5564 getChildNodes : async ( ) => {
5665 this . instances = ( await this . client . listInstances ( [ this . arn ] ) ) . map ( ( i ) => {
@@ -60,6 +69,7 @@ export class DBClusterNode extends DBResourceNode {
6069 return { ...i , ...member }
6170 } )
6271 const nodes = this . instances . map ( ( instance ) => new DBInstanceNode ( this , instance ) )
72+ this . childNodes = nodes
6373 return nodes
6474 } ,
6575 getNoChildrenPlaceholderNode : async ( ) => {
@@ -132,7 +142,9 @@ export class DBClusterNode extends DBResourceNode {
132142 }
133143
134144 override async getStatus ( ) {
135- const [ cluster ] = await this . client . listClusters ( this . id )
145+ const [ cluster ] = await this . client . listClusters ( this . arn )
146+ getLogger ( ) . info ( `Updating Status: new status ${ cluster ?. Status } for cluster ${ this . arn } ` )
147+ this . cluster . Status = cluster ?. Status
136148 return cluster . Status
137149 }
138150
@@ -149,6 +161,22 @@ export class DBClusterNode extends DBResourceNode {
149161 return Promise . reject ( )
150162 }
151163
164+ override refreshTree ( ) : void {
165+ this . clearTimer ( )
166+ this . refresh ( )
167+ this . parent . refresh ( )
168+ }
169+
170+ override clearTimer ( ) : void {
171+ this . pollingSet . delete ( this . arn )
172+ this . pollingSet . clearTimer ( )
173+ this . childNodes . forEach ( ( node ) => {
174+ getLogger ( ) . info ( `(clearTimer) Removing Polling from node: ${ node . arn } ` )
175+ node . pollingSet . delete ( node . arn )
176+ node . pollingSet . clearTimer ( )
177+ } )
178+ }
179+
152180 public [ inspect . custom ] ( ) : string {
153181 return 'DBClusterNode'
154182 }
0 commit comments