2016-11-04 2 views
2

Ich habe ein Java-Servlet in einer App-Engine-Standard-Umgebung, die regelmäßig von einem Cron-Job ausgelöst wird. Das Servlet liest Daten aus einer Firebase-Datenbank. Dieses Servlet funktioniert ungefähr einen Tag lang einwandfrei, aber dann scheint es, dass es keine Verbindung zur Firebase-Datenbank herstellen kann. Das einzige, was dies zu beheben scheint, ist die erneute Bereitstellung des Servlets.Google App Engine Servlet läuft über Cron Job funktioniert nicht mehr nach während

Meine App ist zum Beispiel an dieser Verbindung sehr ähnlich:

https://cloud.google.com/solutions/mobile/firebase-app-engine-android-studio#adding_backend_logic_using_app_engine

Hat jemand anderes dieses Problem mit Feuerbasis erlebt?

Danke.

Antwort

2

Dies ist ein bekanntes Problem mit der Firebase Java Server-Bibliothek. Der Thread, der die Verbindung zu Firebase verwaltet, wird nach 24 Stunden von GAE gelöscht. Es ist auf die Tatsache, dass manuell skalierten Instanz Jobs nur für 24 Stunden laufen, lose hier dokumentiert:

https://cloud.google.com/appengine/docs/java/an-overview-of-app-engine#scaling_types_and_instance_classes

Vielleicht stattdessen könnte man Firebase in a flexible instance versuchen?

EDIT: Dieses Problem wurde in der Firebase admin library for Java in Version 4.0.4 behoben.

+0

Danke für die Info, aber ich bin immer noch ein bisschen verwirrt. Mein Cron-Job läuft nicht ständig 24 Stunden lang. Es macht eine kleine Menge Arbeit, und dann ist es getan. Es hört sich die Änderungen der Firebase-Datenbank nicht ständig an. Ich dachte (fälschlicherweise vielleicht), dass, wenn der Cron-Job ausgeführt wird, eine neue Instanz des Servlets erstellt wird, ruft doGet() auf, dann wird das Servlet beendet. Wissen Sie, ob es eine Möglichkeit gibt, dieses Problem zu vermeiden, indem Sie möglicherweise die Firebase-Verbindung schließen und neu erstellen, wenn das Servlet erstellt und zerstört wird? Ich möchte lieber nicht in eine flexible Umgebung gehen. – Heath

+0

Wenn Sie manuelle Instanzen auf 1 setzen, wie es in den Anweisungen heißt, wird eine Instanz immer ausgeführt, auch wenn ein Job nicht aktiv ist. Genau das ist mir passiert. –

+0

Nach dem Wechsel in die flexible Umgebung scheint es jetzt gut zu funktionieren. Vielen Dank. – Heath

Verwandte Themen