marshal
ライブラリを使用してTCPソケットを介して渡された後に、デシリアライズされたマップ関数とreduce関数を使用してDiscoジョブを実行しようとしています。具体的には、私はすでに、同じシステム上で(ローカルに定義された機能を持つ)無地ディスコジョブをテストしてみた、と彼らは正常に動作ディスコの「ワーカーイベントを解析できませんでした」とはどういう意味ですか?
code = marshal.loads(data_from_tcp)
func = types.FunctionType(code, globals(), "func")
でそれらを開梱しています。しかし、新しい機能を使ってディスコジョブを実行すると、エラーメッセージが表示され続けます。localhost WARNING: [map:0] Could not parse worker event: invalid_length
私はドキュメントを検索しましたが、「ワーカーイベント"、またはinvalid_length
のいずれかです。ソースコードでgrepを実行した後、具体的にはmaster/src/disco_worker.erl
というファイルに、「ワーカーイベントを解析できませんでした」というフレーズのインスタンスが1つ見つかります。私はアーランに精通しておらず、どのように動作しているのか分かりません。
この問題の原因は何ですか?私はそれを回避するために他の何かをする必要がありますか?
編集:さらにデバッグした後、私はこのエラーが私のテストケース関数内でstring.split()メソッドを使用することに結びついていることに気付きました。入力の一部ではない文字列であっても、このエラーが発生します。私はメソッドがオブジェクト上に存在することを確認しましたが、それを呼び出すことは問題を引き起こすようです。何かご意見は?
編集2:また、re.split関数を使用すると、同じ効果が得られます。
編集3:マップ関数の入力文字列で任意の文字列関数を呼び出すと、同じエラーが発生するようです。
ありがとうございました。 stdoutで出力を生成しないようにワーカーを変更すると、これも私の仕事で修正されたようです。 –