oklinsong 2012-02-24
异常现象:
1、两个测试站点没有任何异常。
2、产品站频繁报异常:java.lang.NullPointerException;但就只有这一行,没有任何的其它提示。
尝试解决:
1、java.lang.NullPointerException这个异常很常见,问题是这次异常不像往常一样有提示哪行代码出错可以快速定位,反复检查代码,没找到问题;反编译产品站该类的class文件和本地对比,没有差异。
2、将本地的代码重新拷贝到产品站,重启-->问题仍存在
3、将产品站的代码复制到本地进行测试-->本地不存在该问题
4、将产品站的数据库同步到本地,重启本地服务器-->本地不存在该问题
5、进行系统reindex-->问题解决
解决思路:
根据异常提示java.lang.NullPointerException,首先就想到了代码有问题,一开始就被引入了死胡同,不管怎么折腾,都没法解决,搞了一天都在做无用功。第二天上午一来重新整理思路,奇怪的问题不能按常规的方法进行处理,回顾这次在产品站上的操作除了新功能的发布外还作了数据迁移,而这套系统一大特点就用了lucene技术,既然进行了数据迁移是不是应该进行重建索引,是不是因为数据迁移而导致索引不一致才导致程序找不到相应的数据而报空指针,想想还真值得一试,这么一试,还真给试对了,问题迎刃而解。
事后反思:
对lucene技术原理认识不深,导致在做数据迁移时根本没有意识到需要进行reindex操作。
经验总结:
如用到lucene技术,在进行数据迁移时切记进行reindex操作。