2017-02-23 5 views
0

ノードスクリプトを使用してファイル管理タスクを実行しています。 node-windowsパッケージは、このスクリプトをWindowsサービスとして実行できるようにするために含まれています。私はこのサービスが同じスクリプトの重複したインスタンスを開始したことに気づいたとき、今朝深刻なエラーに遭遇しました。これは非常に悪いことです。両方のスクリプトが同じデータセットを処理しようとしていたため、24時間分のデータが破損し、破損してしまいました。私はWindowsサービスがこのようなことを許可するのを見たことがない。他の誰かがこの問題を抱えていたのですか?ノードWindowsサービスが複数のインスタンスを開始する

+0

node-windowsは、ユーザーからの何らかの明示的なアクションなしでプロセスの**新しい**インスタンスを開始しません。障害が発生した場合は既存のプロセスを再起動するので、プロセスが正常に終了しないようにする(つまり、正しい終了コード)ことが重要です。そうしないと、プロセスがリムボー状態になる可能性があります。 – Corey

答えて

0

node-windowsインスタンスについての私のコメントを参照してください。

実際の問題は、データの破損であり、node-windowsとは関係ありません。ノードスクリプトにはフォールトトレランスが必要です。具体的には、ファイルロックを実装する必要があります。これは、この厳密なシナリオを防ぐ標準的な方法です。

いくつかのファイルロックモジュールがあります。 lockfileはnpmが使用するものです。 proper-lockfileというもう1つのプロジェクトもありますが、これは若干異なる(よりWindowsフレンドリな)方法で問題を解決します。

関連する問題