Skip to content
This repository was archived by the owner on Apr 3, 2024. It is now read-only.

Commit 7ed8fb2

Browse files
authored
feat!: Remove support for deprecated Cloud Debugger API. (#1144)
After this change, all agents will use the firebase backend.
1 parent c292200 commit 7ed8fb2

File tree

13 files changed

+2610
-3284
lines changed

13 files changed

+2610
-3284
lines changed

src/agent/debuglet.ts

Lines changed: 27 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import * as metadata from 'gcp-metadata';
2222
import * as path from 'path';
2323
import * as util from 'util';
2424

25-
import {Debug, PackageInfo} from '../client/stackdriver/debug';
2625
import {StatusMessage} from '../client/stackdriver/status-message';
2726
import {CanaryMode, Debuggee, DebuggeeProperties} from '../debuggee';
2827
import * as stackdriver from '../types/stackdriver';
@@ -35,7 +34,6 @@ import {
3534
ResolvedDebugAgentConfig,
3635
} from './config';
3736
import {Controller} from './controller';
38-
import {OnePlatformController} from './oneplatform-controller';
3937
import * as scanner from './io/scanner';
4038
import * as SourceMapper from './io/sourcemapper';
4139
import * as utils from './util/utils';
@@ -79,6 +77,11 @@ export enum Platforms {
7977
DEFAULT = 'default',
8078
}
8179

80+
export interface PackageInfo {
81+
name: string;
82+
version: string;
83+
}
84+
8285
/**
8386
* Formats a breakpoint object prefixed with a provided message as a string
8487
* intended for logging.
@@ -185,7 +188,7 @@ export interface FindFilesResult {
185188
}
186189

187190
export class Debuglet extends EventEmitter {
188-
private debug: Debug;
191+
private packageInfo: PackageInfo;
189192
private v8debug: DebugApi | null;
190193
private started: boolean;
191194
private running: boolean;
@@ -216,7 +219,7 @@ export class Debuglet extends EventEmitter {
216219
activeBreakpointMap: {[key: string]: stackdriver.Breakpoint};
217220

218221
/**
219-
* @param {Debug} debug - A Debug instance.
222+
* @param {PackageInfo} packageInfo - Information about the agent package.
220223
* @param {object=} config - The option parameters for the Debuglet.
221224
* @event 'started' once the startup tasks are completed. Only called once.
222225
* @event 'stopped' if the agent stops due to a fatal error after starting.
@@ -227,14 +230,14 @@ export class Debuglet extends EventEmitter {
227230
* called multiple times.
228231
* @constructor
229232
*/
230-
constructor(debug: Debug, config: DebugAgentConfig) {
233+
constructor(packageInfo: PackageInfo, config: DebugAgentConfig) {
231234
super();
232235

233236
/** @private {object} */
234237
this.config = Debuglet.normalizeConfig_(config);
235238

236-
/** @private {Debug} */
237-
this.debug = debug;
239+
/** @private {PackageInfo} */
240+
this.packageInfo = packageInfo;
238241

239242
/**
240243
* @private {object} V8 Debug API. This can be null if the Node.js version
@@ -257,7 +260,7 @@ export class Debuglet extends EventEmitter {
257260
/** @private */
258261
this.logger = consoleLogLevel({
259262
stderr: true,
260-
prefix: this.debug.packageInfo.name,
263+
prefix: this.packageInfo.name,
261264
level: Debuglet.logLevelToName(this.config.logLevel),
262265
});
263266

@@ -431,37 +434,20 @@ export class Debuglet extends EventEmitter {
431434
}
432435

433436
let project: string;
434-
if (this.config.useFirebase) {
435-
try {
436-
const firebaseDb = await FirebaseController.initialize({
437-
keyPath: this.config.firebaseKeyPath,
438-
databaseUrl: this.config.firebaseDbUrl,
439-
projectId: this.config.projectId,
440-
});
441-
this.controller = new FirebaseController(firebaseDb);
442-
project = (this.controller as FirebaseController).getProjectId();
443-
} catch (err) {
444-
this.logger.error(
445-
'Unable to connect to Firebase: ' + (err as Error).message
446-
);
447-
this.emit('initError', err);
448-
return;
449-
}
450-
} else {
451-
try {
452-
project = await this.debug.authClient.getProjectId();
453-
} catch (err) {
454-
this.logger.error(
455-
'The project ID could not be determined: ' + (err as Error).message
456-
);
457-
this.emit('initError', err);
458-
return;
459-
}
460-
this.controller = new OnePlatformController(
461-
this.debug,
462-
this.config,
463-
this.logger
437+
try {
438+
const firebaseDb = await FirebaseController.initialize({
439+
keyPath: this.config.firebaseKeyPath,
440+
databaseUrl: this.config.firebaseDbUrl,
441+
projectId: this.config.projectId,
442+
});
443+
this.controller = new FirebaseController(firebaseDb);
444+
project = (this.controller as FirebaseController).getProjectId();
445+
} catch (err) {
446+
this.logger.error(
447+
'Unable to connect to Firebase: ' + (err as Error).message
464448
);
449+
this.emit('initError', err);
450+
return;
465451
}
466452

467453
if (
@@ -518,7 +504,7 @@ export class Debuglet extends EventEmitter {
518504
this.config.serviceContext,
519505
sourceContext,
520506
onGCP,
521-
this.debug.packageInfo,
507+
this.packageInfo,
522508
platform,
523509
this.config.description,
524510
/*errorMessage=*/ undefined,
@@ -861,7 +847,7 @@ export class Debuglet extends EventEmitter {
861847
// New breakpoint
862848
this.addBreakpoint_(breakpoint, err => {
863849
if (err) {
864-
this.completeBreakpoint_(breakpoint, false);
850+
this.completeBreakpoint_(breakpoint);
865851
}
866852
});
867853

@@ -1011,10 +997,7 @@ export class Debuglet extends EventEmitter {
1011997
* @param {Breakpoint} breakpoint
1012998
* @private
1013999
*/
1014-
completeBreakpoint_(
1015-
breakpoint: stackdriver.Breakpoint,
1016-
deleteFromV8 = true
1017-
): void {
1000+
completeBreakpoint_(breakpoint: stackdriver.Breakpoint): void {
10181001
assert(this.controller);
10191002

10201003
this.logger.info('\tupdating breakpoint data on server', breakpoint.id);
@@ -1027,13 +1010,6 @@ export class Debuglet extends EventEmitter {
10271010
this.logger.error('Unable to complete breakpoint on server', err);
10281011
return;
10291012
}
1030-
// The Firebase controller will remove the breakpoint during the update
1031-
// by removing it from the database.
1032-
if (!this.config.useFirebase) {
1033-
// TODO: Address the case when `breakpoint.id` is `undefined`.
1034-
this.completedBreakpointMap[breakpoint.id as string] = true;
1035-
this.removeBreakpoint_(breakpoint, deleteFromV8);
1036-
}
10371013
}
10381014
);
10391015
}

src/agent/firebase-controller.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,9 @@ export class FirebaseController implements Controller {
7676
credential = firebase.credential.cert(serviceAccount);
7777
} else {
7878
if (!projectId) {
79-
// Try grabbing it from the GCE metadata server.
80-
if (await gcpMetadata.isAvailable()) {
79+
if (process.env.GCLOUD_PROJECT) {
80+
projectId = process.env.GCLOUD_PROJECT;
81+
} else if (await gcpMetadata.isAvailable()) {
8182
projectId = await gcpMetadata.project('project-id');
8283
}
8384
}

0 commit comments

Comments
 (0)