firebase-tools 15.17.0 → 15.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -58,38 +58,62 @@ async function execute(sqlStatements, opts) {
58
58
  : cloud_sql_connector_1.IpAddressTypes.PRIVATE,
59
59
  authType: authType,
60
60
  };
61
- const pool = new pg.Pool({
62
- ...(await connector.getOptions(connectionOpts)),
63
- password: opts.password,
64
- user: opts.username,
65
- database: opts.databaseId,
66
- });
67
- const cleanUpFn = async () => {
68
- conn.release();
69
- await pool.end();
70
- connector.close();
71
- };
72
- const conn = await pool.connect();
61
+ let pool;
62
+ let conn;
73
63
  const results = [];
74
- logFn(`Logged in as ${opts.username}`);
75
- if (opts.transaction) {
76
- sqlStatements.unshift("BEGIN;");
77
- sqlStatements.push("COMMIT;");
64
+ try {
65
+ pool = new pg.Pool({
66
+ ...(await connector.getOptions(connectionOpts)),
67
+ password: opts.password,
68
+ user: opts.username,
69
+ database: opts.databaseId,
70
+ });
71
+ pool.on("error", (err) => {
72
+ logger_1.logger.debug("[cloudsql] pool error (ignored during teardown):", err);
73
+ });
74
+ conn = await pool.connect();
75
+ logFn(`Logged in as ${opts.username}`);
76
+ if (opts.transaction) {
77
+ sqlStatements.unshift("BEGIN;");
78
+ sqlStatements.push("COMMIT;");
79
+ }
80
+ for (const s of sqlStatements) {
81
+ logFn(`> ${s}`);
82
+ try {
83
+ results.push(await conn.query(s));
84
+ }
85
+ catch (err) {
86
+ logFn(`Rolling back transaction due to error ${err}}`);
87
+ await conn.query("ROLLBACK;");
88
+ throw new error_1.FirebaseError(`Error executing SQL statement: ${s}: ${err}`);
89
+ }
90
+ }
91
+ logFn(``);
78
92
  }
79
- for (const s of sqlStatements) {
80
- logFn(`> ${s}`);
93
+ finally {
94
+ if (conn) {
95
+ try {
96
+ conn.release();
97
+ }
98
+ catch (err) {
99
+ logger_1.logger.debug("[cloudsql] error releasing connection during cleanup:", err);
100
+ }
101
+ }
102
+ if (pool) {
103
+ try {
104
+ await pool.end();
105
+ }
106
+ catch (err) {
107
+ logger_1.logger.debug("[cloudsql] error ending pool during cleanup:", err);
108
+ }
109
+ }
81
110
  try {
82
- results.push(await conn.query(s));
111
+ connector.close();
83
112
  }
84
113
  catch (err) {
85
- logFn(`Rolling back transaction due to error ${err}}`);
86
- await conn.query("ROLLBACK;");
87
- await cleanUpFn();
88
- throw new error_1.FirebaseError(`Error executing ${err}`);
114
+ logger_1.logger.debug("[cloudsql] error closing connector during cleanup:", err);
89
115
  }
90
116
  }
91
- await cleanUpFn();
92
- logFn(``);
93
117
  return results;
94
118
  }
95
119
  async function executeSqlCmdsAsIamUser(options, instanceId, databaseId, cmds, silent = false, transaction = false) {