又是被开源坑的一天,itext html2pdf,导致文件资源过多

307 阅读1分钟

早上,运维甩来两个报错

每个进程可打开的文件描述符有限制,为啥还把nio和dubbo的socket给搞爆了??? ok,fine,看看现在打开了多少文件吧。。。

wtf??这是啥玩意儿,问了问开发同学,html转pdf中,html代码用到了这个字体。。。 ok,那就看看这个加载的代码吧

再进去看到一个addfont的东西

进入到这个create方法 ------------华丽丽的分割线-----------------
里面有这么一个玩意儿,这是一个伏笔,一会儿说

-----------华丽丽的结束------------------
再往下走,进到里面

这里会创建一个Parser对象,里面调用了一个initial代码,再看看这个初始化方法,问题就在这里

初始化方法里面会去调用创建这个资源,但是判断的时候却看到他这里出现了不可读的情况????what the ffffff??对我的字体文件有啥意见???我可以某度上下的。 然后问题来了,他还是读取了这个文件

然后bug来了,这里抛出了IO异常,你抛出ok,fine没问题,你这时候跟着这个方法一路往上走

兄弟,你告诉我这是什么???你没关资源啊!!!!finally呢???

文件还开在这里啊兄弟!!! 因为这个转换线程是个守护线程,只要有任务过来就会一直不断重复创建这个对象,然后不断IO异常,然后不断开文件。。。。。。。again & again & again。。。

所以解决方法就是,把这字体文件 down to the sea,goodbye motherfuxxxxxxker。。。。

或者更改代码,只初始化一次,这样就算错了,也不会资源泄漏,让我改代码,ok,fine,下个版本一定重构。。。。