【问题标题】:GearmanWorker fails with 'Failed to set exception option'GearmanWorker 因“无法设置异常选项”而失败
【发布时间】:2015-02-07 15:18:14
【问题描述】:

我正在尝试使用德语构建分布式处理环境,但第一步我失败了。我的设置: PHP 5.6.4-1~dotdeb.1 gearman support => enabled libgearman version => 1.1.12 gearman-server-0.6.2.jar

样本工人

<?php
$worker= new GearmanWorker();
echo "worker options: " . $worker->options() . PHP_EOL;
$worker->setOptions(1);
echo "worker options: " . $worker->options() . PHP_EOL;
$worker->addServer("192.168.130.16");
$worker->addFunction("reverse", "my_reverse_function");
while ($worker->work());

function my_reverse_function($job)
{
  return strrev($job->workload());
}
?>

当尝试运行 worker 时出现错误:

vagrant@planq:~$ php worker.php 
PHP Fatal error:  Uncaught exception 'GearmanException' with message 'Failed to set exception option' in /home/vagrant/worker.php:3
Stack trace:
#0 /home/vagrant/worker.php(3): GearmanWorker->addServer('192.168.130.16', 4730)
#1 {main}
  thrown in /home/vagrant/worker.php on line 3

和服务器报告

10:15:02.762 - [nioEventLoopGroup-3-2] DEBUG n.j.gearman.server.net.PacketHandler - Creating new handler!
10:15:02.762 - [nioEventLoopGroup-3-2] ERROR n.j.g.common.packets.PacketFactory - Unhandled type: 
10:15:02.763 - [nioEventLoopGroup-3-2] WARN  n.j.gearman.server.net.PacketHandler - Unexpected exception from downstream.
io.netty.handler.codec.DecoderException: java.lang.NullPointerException
    at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:415) ~[gearman-server-0.8.9-20141210.162656-1.jar:0.4]
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:131) ~[gearman-server-0.8.9-20141210.162656-1.jar:0.4]
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:334) [gearman-server-0.8.9-20141210.162656-1.jar:0.4]
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:320) [gearman-server-0.8.9-20141210.162656-1.jar:0.4]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [gearman-server-0.8.9-20141210.162656-1.jar:0.4]
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:100) [gearman-server-0.8.9-20141210.162656-1.jar:0.4]
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:497) [gearman-server-0.8.9-20141210.162656-1.jar:0.4]
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:465) [gearman-server-0.8.9-20141210.162656-1.jar:0.4]
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:359) [gearman-server-0.8.9-20141210.162656-1.jar:0.4]
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) [gearman-server-0.8.9-20141210.162656-1.jar:0.4]
    at java.lang.Thread.run(Thread.java:744) [na:1.7.0_45]
Caused by: java.lang.NullPointerException: null
    at net.johnewart.gearman.server.net.Decoder.decode(Decoder.java:60) ~[gearman-server-0.8.9-20141210.162656-1.jar:0.4]
    at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:360) ~[gearman-server-0.8.9-20141210.162656-1.jar:0.4]
    ... 10 common frames omitted
10:15:02.764 - [nioEventLoopGroup-3-2] DEBUG n.j.gearman.server.net.PacketHandler - Client closed channel: [id: 0x89bba760, /192.168.130.16:59106 :> 0.0.0.0/0.0.0.0:4730]
10:15:03.637 - [pool-2-thread-1] DEBUG n.j.g.s.u.SnapshottingJobQueueMonitor - Snapshotting job queues.
10:15:03.638 - [pool-2-thread-1] DEBUG n.j.g.s.u.SnapshottingJobQueueMonitor - Condensing data points

我会为解决问题的任何线索提供帮助...

【问题讨论】:

  • 这是关于该问题的旧版bug 报告。使用 Java 版本的 Gearman 服务器有什么特别的原因吗?使用的是什么 Gearman PECL 扩展版本?
  • Gearman PECL => gearman 1.1.2 稳定版。就服务器而言,我想使用java版本,因为它只需要JVM,所以我可以很容易地在不同的机器上测试它。

标签: php gearman


【解决方案1】:

原来这是服务器中的一个错误。提交bug report 后,John 修复了服务器。版本0.8.10-SNAPSHOT
解决了这个问题,就像一个魅力。

【讨论】:

    【解决方案2】:

    大多数时候(但不是你的情况)它只是意味着 Gearman 服务器不可加入。或者默认绑定到本地主机。检查/etc/default/gearman-job-server 和中间的任何防火墙以确保。

    【讨论】:

      猜你喜欢
      • 2020-05-09
      • 2015-12-22
      • 2020-11-14
      • 2018-03-12
      • 2014-07-29
      • 2013-02-03
      • 1970-01-01
      • 2014-02-06
      • 2015-06-15
      相关资源
      最近更新 更多