Amazon SWF的通信错误 - Ruby Flow

时间:2013-09-03 16:14:03

标签: ruby amazon-web-services

我们遇到了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通信问题。 SO上有类似的问题与Twitter API进行通信。

同样,这不是SWF超时到期的问题;工作流的超时为一天,每个活动的超时时间为一小时。失败发生在该边界内。

不幸的是,它通常起作用,我通常可以启动工作流程执行,我只是经常得到这种错误,以至于我们无法完成除了琐碎的工作以外的任何事情。错误是随机的,故障排除非常困难。

我们已在不同的机器和不同的网络上重现了这一点。我们仍然在开发中尝试SWF,因此没有失败的工作人员位于EC2实例上。


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

1 个答案:

答案 0 :(得分:0)

我已经与维护ruby-flow库的亚马逊人讨论了这个问题。可以找到该讨论here

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

根本原因似乎是Mac OSX中的一些东西。我们将其用于开发,并在几台不同的机器上运行此问题(运行10.7和10.8)。

新的Linux机器没有出现问题。