tuxedo fml32 long 类型接口的惨剧_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2974 | 回复: 0   主题: tuxedo fml32 long 类型接口的惨剧        下一篇 
xuefeng
注册用户
等级:上士
经验:315
发帖:69
精华:0
注册:2011-8-17
状态:离线
发送短消息息给xuefeng 加好友    发送短消息息给xuefeng 发消息
发表于: IP:您无权察看 2014-10-8 15:04:51 | [全部帖] [楼主帖] 楼主

最近我们公司的一个"大型"系统上线。
为了图方便,为了与老系统的id区分,直接将这个id由原来的9位升到了12位.

估计经理忘了或者经验不足,通知了客户,并没有通知作下游系统主管的我这边.
自认为很通技术的客户一番测试,给了ok没问题的回复.

于是过了几天,客户发现,与我这边有接口的各种外围统系(主要是银行)无法成功调用了,而且只有这些新统进来的数据无法调,老的数据是ok的.

他们 tpcall 就挂住,而我这边可以看到报错:

WSH.708630.1.0: LIBTUX_CAT:6031: ERROR: Unable to pre-process buffer before tranmission. Error code(12/4114)
WSH.708630.1.0: WSNAT_CAT:1148: ERROR: Processing of message to be sent to client failed
WSH.708630.1.0: WSNAT_CAT:1029: ERROR: Sending of reply message to client failed


奇怪的是,用我们自己的测试 client 来调是正常的。

只能认定是做为银行的调用端有问题,甚至还以为是 txuedo 的 bug 又出现了(确实有这个bug,报错也是一样的).
反复折腾.

最后一一比较新老数据,我终于发现,作为接口传输参数的这个id怎么新的变得这么长. 12 位!!!
蛋疼阿,因为我接手前,脑残的前辈和银行对接口的时候,定义 fml32 将这个 id 用了 long 型.

而同样不靠谱的银行端口,用的是32位的windows来开发的系统.
12位还想塞到 long 里面去? 银行的 tuxedo 那边连 buffer 都收不下来.
而我这边全部是64位的AIX,自然一点问题也没有.

而将接口改为 string 也是不现实的. 一但我这边一改,所有调用端都得动.
先不说一一通知10多家银行和各种接口是否现实, 就算接口改为 string 了,天知道银行自己内部的程序,是否有将这个id取下来,然后拿个 long 型变量的情况.  有些银行连开发人员和源代码都没了.

让他们升级为64位,更不可能了.
最悲剧的是,我们不占理阿,谁让一开始就用 long 来做接口,用 string 不就万事大吉了.你自己拿 long 又去存,存不存得下那是你的问题了.
以后切记凡涉及接口,一律用 string

各大领导开会,讨论,折腾.....
最后一检查9位段的资源,还有几辈子都用不完的资源没用.
解决方案就是改回9位.

数据库里那些已有的 id 也得 update , 系统复杂的模型阿,还有外键约束.....
于是我国庆也得悲剧的加班来写 update 的方案和脚本了。

--转自搜狗




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论