Storm问题——组件带参数构造函数未被调用,抛出NullpointerException

问题描述

不知道大家有没有遇到过这个问题,我实现了BaseRichBolt,重载一个带参数的构造函数,new这个组件时传入一个参数作为该组件的成员变量,然后在declareOutputFields方法中调用该变量,local模式运行正常,分布式模式运行就抛NPE。后来过了半小时,再提交,又OK了。(PS:其间检查了很多遍代码,没有传入NULL变量)

我在开发trident程序时,继承mapState时也出现了这个问题

可能原因

1、跟storm本身的序列化机制有关系,storm本身对组件进行序列化和反序列化时,提供一个默认的无参构造函数,至于为什么会提供这个,请看可能原因2

2、猜想在分布式环境,storm要根据集群topology的工作来维护各个topology之间的状态以及一些细节state之类的,突然有些时候state变化,就导致了上面的问题

这两个可能原因目前还是自己的YY,没有找到具体原因,后续继续研究源码,找到再补上。

时间: 2024-08-08 13:52:07

Storm问题——组件带参数构造函数未被调用,抛出NullpointerException的相关文章

第四周(带参数构造函数)

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:第四周(带参数构造函数) *作者:王忠 *完成日期:2015.4.1 *版本号:v1.0 * *问题描述:输入三角形三边,求出周长面积 *输入描述:无 *程序输出:输出周长面积 #include <iostream> #include <cmath> using namespace std; class Triangle { public: Triangle(do

php 发送post请求且header中带参数bug调试

  通常get方式header中带参数如下通过curl调用即可: function send_get_curl_header($url, $data){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,

微信公众号带参数二维码的使用?

带参数的二维码:使用微号帮平台生成,每一个二维码都带有参数,可以统计关注的每一个粉丝从哪里来的,做到渠道场景分析,方便以后进行粉丝精细化运营,使用微号帮平台其他发信息功能,针对性推送信息给公众号粉丝. 1.创建渠道二维码从微号帮后台高级功能点击[渠道二维码生成],右侧选择+创建渠道二维码 2.[0515卡券发放]实例创建[0515卡券发放],准备通过带参数二维码向粉丝发放卡券 3.扫码弹出信息设置卡券带参数二维码设置弹出卡券领取 4.卡券设置选择公众号后台已经制作好的卡券二维码,默认卡券二维码只

【spring教程之二】spring注入xml中带参数的构造函数

1.续上文,如果想在注入bean文件的时候,传入参数到构造函数中.主要需要修改的就是spring.xml配置文件中的配置方法. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta

elementUi——组件函数钩子自带参数,不能添加参数问题

在element-ui中的组件函数钩子一般都是自带参数如: //上传组件 <el-upload class="upload-demo" action="https://jsonplaceholder.typicode.com/posts/" :on-preview="handlePreview" :on-remove="handleRemove" :before-remove="beforeRemove&quo

微信二维码带参数的二维码(转)

官方文档地址:https://mp.weixin.qq.com/wiki/18/28fc21e7ed87bec960651f0ce873ef8a.html 原文地址:http://jingyan.baidu.com/article/fdbd4277cfd0c6b89f3f485f.html 注意事项 我知道你们是没有心情看注意事项的,但是很重要,所以我先摆上来. 用户扫描带参数的二维码,可能推送以下两种事件: 1.如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给

带参数二维码的使用

带参数二维码的使用 最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助. 我本次开发使用的是认证服务号. 1 接入 首先进入微信公众号 -> 基本配置 下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Module

c# 多线程 调用带参数函数

线程操作主要用到Thread类,他是定义在System.Threading.dll下.使用时需要添加这一个引用.该类提供给我们四个重载的构造函数(以下引自msdn).       Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托.     Thread (ThreadStart) 初始化 Thread 类的新实例.    由 .NET Compact Framework 支持.        Threa

带参数的main函数的使用

以前接触的main函数都是不带参数的.因此main 后的括号都是空括号.  main() {   ...  } 实际上,main函数可以带参数,这个参数可以认为是main函数的形式参数. C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv.因此,main函数的函数头可写为: main(argc,argv) C语言还规定argc(第一个形参)必须是整型变量,argv(第二个形参)必须是指向字符串的指针数组.加上形参说明后,main函数的函数头应写为: main (int