firebase / firebase/firebase-admin-node

Database connectivity errors are not propagated

Offen
#2,004 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
api: database
Vorherrschende Sprache
TypeScript
Sterne
1.7k
Forks
419
Ø Merge
3 T. 10 Std.
Gemergte PRs (30 T.)
16

Beschreibung

### Step 2: Describe your environment

* Operating System version: all
* Firebase SDK version: 10+
* Firebase Product: database
* Node.js version: all
* NPM version: all

### Step 3: Describe the problem

Errors in connecting to the database are not propagated to user's code. Instead, the library will wait indefinitely when an attempt is made to read or write to the database.

#### Steps to reproduce:

Provide either:
* valid credentials that do not have correct scopes or permissions to access the database
* invalid database url

App initialization will succeed.

Attempt to read or write to the database, triggering an attempt to connect to the database.

Errors will be written to the console, but the error handlers (either the callback on set() or promise rejections) will not be called.

Example error in logs:
```
@firebase/database: FIREBASE WARNING: Firebase error. Please ensure that you have the URL of your Firebase Realtime Database instance configured correctly.
```

Note that this is appears to be a change going from v9 to v10 of the firebase-admin library.

#### Relevant Code:

```
const firebase = require('firebase-admin');

const app = firebase.initializeApp({
credential: credentialWithoutPermissions, // only one of these mistakes is required.
databaseURL: wrongDatabaseUrl,
});

const db = firebase.database();

db.ref('foo').get().then(
() => {
// won't be called because it won't succeed
},
err => {
// won't be called because the failure doesn't propagate
});
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, den Fehler mit der bereitgestellten firebase-admin-Initialisierung und dem Beispiel für das Lesen aus der Datenbank zu reproduzieren, unter Verwendung einer ungültigen Datenbank-URL oder unzureichender Berechtigungen. Vergleiche anschließend das Verhalten zwischen den SDK-Versionen 9 und 10 und verfolge dann Datenbankverbindungsfehler durch die Fehlerbehandlung für Lese-/Schreibvorgänge. Die Aufgabe ist abgeschlossen, wenn Callbacks den Fehler erhalten und promise-basierte Vorgänge abgelehnt werden, anstatt unbegrenzt zu warten.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
node.js, typescript
Bereich
databases
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.