2017-09-20 12 views
0

firebaseにインターリーブ/同時実行されている複数の実行があります。ログIDは、新しい実行が発生し、古い実行IDが忘れられたときに変更されます。したがって、実行IDは前方に移動します。古い関数が再開すると、新しい実行IDが使用されます。古い関数の古い実行IDを達成する方法はありますか?&新しい関数の新しい実行IDです。Firebaseのクラウド機能でログに同じ実行IDを持たせる方法

firebase logs

ワークフロー
は機能1 &機能2は、同じ機能の切り抜いたトリガされているとしましょう。
1. Function1は、一部のデータベース読み取りを行い、http要求を行います。これはhttpの約束を返します - これは時間がかかります(おそらく数ミリ秒)。ログからの実行IDが154690519665944であると仮定します。
2. function1が待機している間に、Function2がトリガーされます。 function2は実行ID 154690574405903を取得します。 function2も同じことを行い、http応答を待ちます。
3. Function1が再開し、http応答を取得し、ログ中に別の実行ID 154694739233261をログに記録します。

実行IDには何が起こったのですか154690519665944

複数のトリガが同時に発生しているため、機能が正常に完了したかどうかを確認する唯一の方法は、ログをチェックすることです。したがって、フィルタとしてexecution-idを使用することによって、関数が正常に実行されたかどうかを調べることができました。しかし、firebaseは実行IDをランダムに変更するので、別の解決策を見つけなければならないと思います。

PS:同じ機能をトリガーするアップデートコールがあります。それは親関数の実行IDを変更しますか?

+0

私はあなたが何を求めているのか分かりません。関数を実行するたびに、その関数が実行されている間、その実行IDが保持されます。 –

答えて

0

あなたのコードやログを見ることなく、私は決定的な答えを提供することはできません。

ただし、非同期トランザクション間でデータをどのようにメモリに保持することができるのかという疑問があります。かかわらずFirebaseのかどうか、あなたは基本的に2つのオプションがあります。

  1. を トランザクションの最初の部分の間にデータベースにそのデータをコミットした後、第2の部分でそれを取得する最初からデータ を渡しますもう1つはすでにそれを持っているようにしてください。

あなたは実行IDに頼っているようですので、後者のアプローチを取って、そのIDをあなたのhttprequestへの入力の一部として渡して、あなたの呼び出しを応答で返すことをお勧めします。

関連する問題