0

Amazon SWF 的新 Ruby-Flow 包装器存在问题。

问题是 Workflow 和 Activity 工作人员将(每小时数次)无法与 SWF 服务器正确通信。这体现在各种方面:

  • 当新版本的工作人员启动时,工作流或活动无法注册
  • 工作流或活动工作者将崩溃
  • 活动工作者将完成一项任务,然后在报告完成时出错,因此整个执行失败。

对于工人崩溃(任何一种),我们看到以下内容:

andy@Andy-MBP:Crucible $RAILS_ENV=development rake crucible:swf:ingress_wf_start
rake aborted!
execution expired
/Users/andy/.rvm/gems/ruby-1.9.3-p448@rails3/gems/aws-sdk-1.11.1/lib/aws/core/http/connection_pool.rb:301:in `start_session'
/Users/andy/.rvm/gems/ruby-1.9.3-p448@rails3/gems/aws-sdk-1.11.1/lib/aws/core/http/connection_pool.rb:125:in `session_for'
/Users/andy/.rvm/gems/ruby-1.9.3-p448@rails3/gems/aws-sdk-1.11.1/lib/aws/core/http/net_http_handler.rb:52:in `handle'
/Users/andy/.rvm/gems/ruby-1.9.3-p448@rails3/gems/aws-sdk-1.11.1/lib/aws/core/client.rb:238:in `block in make_sync_request'

当失败涉及未能更新任务已完成的服务器时,回溯非常相似。

这本身似乎不是 SWF 问题(也就是说,它不是活动执行的超时);这是一个 Ruby HTTP 通信问题。与 Twitter API 通信的 SO 也存在类似问题。

同样,SWF 超时过期也不是问题。工作流的超时时间为一天,每个活动的超时时间为一小时。故障发生在该边界内。

不幸的是,它大部分都有效,我通常可以启动工作流执行,我只是经常遇到这种错误,以至于我们除了琐碎的工作之外什么都做不了。这些错误非常随机,因此故障排除非常困难。

我们已经在不同的机器和不同的网络上复制了这个。我们仍在尝试开发中的 SWF,因此没有任何失败的工作人员位于 EC2 实例上。


是否有我应该调查的根本原因?
是否有允许我重试这些通信的模式或设置?

4

1 回答 1

0

我已经与维护 ruby​​-flow 库的亚马逊人员详细讨论了这个问题。可以在此处找到该讨论。

问题是我们的计算机无法打开与 AWS 服务器的连接。将重试计数设置得非常高已经解决了我们开发目的的问题。

根本原因似乎在 Mac OSX 中。我们将其用于开发,并在几台不同的机器(运行 10.7 和 10.8)上看到了这个超时问题。

一台新的 Linux 机器没有出现这个问题。

于 2013-09-04T02:19:04.623 回答