客户端调用获取商户提现产品手续费的接口,出现异常org.apache.thrift.TApplicationException: Internal error processing getMerchantFeeVO

接下来,分析服务端的日志:

如下info文件的日志:

可疑的是从db获取CP05产品信息时返回0行。

再看error日志文件,发现了NPE异常:

2019-03-04 09:59:17,660 ERROR [pool-4-thread-20] (ProcessFunction.java:47) - Internal error processing getMerchantFeeVO
java.lang.NullPointerException
at com.emaxcard.manage.common.cache.RedisUtil.isDistinguishBankCardType(RedisUtil.java:536) ~[manage_module-1.0-SNAPSHOT.jar:?]
at com.emaxcard.manage.common.cache.RedisUtil.getRate(RedisUtil.java:440) ~[manage_module-1.0-SNAPSHOT.jar:?]
at com.emaxcard.manage.common.cache.RedisUtil.merchantRedis(RedisUtil.java:150) ~[manage_module-1.0-SNAPSHOT.jar:?]
at com.emaxcard.manage.rpc.service.impl.MerchantRedisServiceImpl.getMerchantFeeVO(MerchantRedisServiceImpl.java:44) ~[manage_server.jar:?]
at com.emaxcard.manage.rpc.service.MerchantRedisService$Processor$getMerchantFeeVO.getResult(MerchantRedisService.java:719) ~[manage_thrift-1.0-SNAPSHOT.jar:?]
at com.emaxcard.manage.rpc.service.MerchantRedisService$Processor$getMerchantFeeVO.getResult(MerchantRedisService.java:699) ~[manage_thrift-1.0-SNAPSHOT.jar:?]
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38) [libthrift-0.11.0.jar:0.11.0]
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) [libthrift-0.11.0.jar:0.11.0]
at org.apache.thrift.TMultiplexedProcessor.process(TMultiplexedProcessor.java:134) [libthrift-0.11.0.jar:0.11.0]
at org.apache.thrift.server.AbstractNonblockingServer$FrameBuffer.invoke(AbstractNonblockingServer.java:518) [libthrift-0.11.0.jar:0.11.0]
at org.apache.thrift.server.Invocation.run(Invocation.java:18) [libthrift-0.11.0.jar:0.11.0]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_181]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]

如下是堆栈里的isDistinguishBankCardType方法代码,可以看出,product对象是null,后文引用它的属性时,自然出现了NPE。

    public boolean isDistinguishBankCardType(String productCode) {
//根据产品code获取产品
Product product = productDao.selectByCodeEnable(productCode);
if ("DPTPAY".equals(product.getTrxType())) {
return false;
} else if ("PAYMNT".equals(product.getTrxType())) {
if (product.getName().indexOf(com.emaxcard.manage.common.utils.Constants.QUICKPAY2) >= 0 ||
product.getName().indexOf(com.emaxcard.manage.common.utils.Constants.B2B) >= 0 ||
product.getName().indexOf(com.emaxcard.manage.common.utils.Constants.QUAGRP) >= 0) {
return false;
}
}
return true;
}

也就是说,服务端程序处理出现未经捕获的Runtime异常,自然,客户端调用这个RPC接口就抛出了Internal error processing**

又见thrift异常之TApplicationException: Internal error processing..的更多相关文章

  1. Eclipse 在启动发生错误异常:An internal error occurred during: "Initializing Java Tooling". java.lang.NullPointerException的解决办法

    异常现象: 打开Eclipse,出现 An internal error occurred during: "Initializing Java Tooling". java.la ...

  2. Eclipse启动发生的错误:An internal error occurred during: "Initializing Java Tooling".

    1.启动Eclipse时,初始化异常:An internal error occurred during: "Initializing Java Tooling". 解决方案:wi ...

  3. ORA-00600: internal error code, arguments: [2662], [0], [1106971], [0], [1107731], [12583040]

    今天是2014-06-06,在进行数据库恢复的时候出现了一个久违的ora-600 [2662]错误.特整理例如以下: 问题描写叙述: system及数据文件误删,採用恢复数据文件的方式将数据库恢复到開 ...

  4. ORA-00600: internal error code, arguments: [kcratr1_lastbwr], [], [], [], [], [], [], []

    今天在PlateSpin Forge(关于PlateSpin相关介绍,请见最下面部分简单介绍) 复制出来的一台数据库服务器上,测试数据库能否正常启动时,遇到了"ORA-00600: inte ...

  5. ORA-00600: internal error code, arguments: [kcblasm_1], [103], [], [], [], [], [], []

    一ORACLE 10.2.0.5.0 标准版的数据库的告警日志出现ORA-00600错误,具体错误信息如下所示 Errors in file /u01/app/oracle/admin/SCM2/bd ...

  6. Eclipse启动时出现错误 An internal error occurred during: “Updating indexes”

    在Eclipse的workspace下有个.metadata文件夹,Eclipse出现异常的log文件就在这个目录下. 最近出现了这样的错误: 查看日志文件发现:     !ENTRY org.ecl ...

  7. Eclipse无法启动报An internal error occurred during: "reload maven project". java.lang.NullPointerException

    由于没有正常关机导致eclipse无法将数据正常写入配置文件导致无法启动.报这样一个异常 An internal error occurred during: "reload maven p ...

  8. Oracle ORA-03137: TTC protocol internal error : [12333] 故障分析

    程序通过JDBC 连接数据库异常,报 ORA-03137[12333]的错误. 当前程序的JDBC 驱动版本:ojdbc16-11.2.0.1.0.jar 数据库版本: 11.2.0.3 一. Log ...

  9. An internal error occurred during: "Retrieving archetypes:". GC overhead limit exceeded

    An internal error occurred during: "Retrieving archetypes:".GC overhead limit exceeded 异常, ...

随机推荐

  1. Spring 源码分析-1-启动

    Spring 源码分析-1-启动 在web项目中使用spring的时候,我们会在web.xml中加入如下配置: <listener> <listener-class>org.s ...

  2. mysql触发器Before和After的区别

    Before与After区别:before:(insert.update)可以对new进行修改.                    after不能对new进行修改.                 ...

  3. 一些值得深入学习和借鉴的 .Net 开源项目

    1.DotNetFramework  .NET Reference Source 发布了 beta 版,可以在线浏览 .NET Framework 4.5.1 的源代码,并且可以通过配置,在 Visu ...

  4. SOUI taobao SVN目录结构说明

  5. Codeforces 461D. Appleman and Complicated Task 构造,计数

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF461D.html 题解 首先我们可以发现如果确定了第一行,那么方案就唯一了. 然后,我们来看看一个点的值确定 ...

  6. Problem J. Journey with Pigs

    Problem J. Journey with Pigshttp://codeforces.com/gym/241680/problem/J考察排序不等式算出来单位重量在每个村庄的收益,然后生序排列猪 ...

  7. 20172328 2018-2019《Java软件结构与数据结构》第八周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第八周学习总结 概述 Generalization 本周学习了二叉树的另一种有序扩展?是什么呢?你猜对了!ヾ(◍°∇°◍) ...

  8. Anaconda基础(一)

    目录 Conda常见命令 环境管理 包管理 conda管理 小技巧 Conda常见命令 环境管理 创建环境 conda create -n 环境名 包列表 进入环境 source activate 环 ...

  9. java单链表反转(花了半个多小时的作品)

    欢迎光临............... 首先我们要搞清楚链表是啥玩意儿?先看看定义: 讲链表之前我们先说说Java内存的分配情况:我们new对象的时候,会在java堆中为对象分配内存,当我们调用方法的 ...

  10. clipboard.js一个可以在移动端一键复制的插件

    网址:https://clipboardjs.com/ 使用方法: 1.引入js <script src="dist/clipboard.min.js"></sc ...