poi的No such file or directory异常分析

在鸡年里,我像勤劳的老公鸡早早的来到了公司。本打算这两天工作时间正好打发下假期综合征,但系统偏不遂人愿。一阵急促的电话声将我的思绪从九霄云外拉到了寒冷刺骨的凡间。业务人员在电话那头催促说"文件不能导出,赶紧看看”。
     我们的理念是 “ 一切为业务服务,为了业务的一切”,业务有难,八方支援。赶紧下机房,拉出日志检查问题。日志里面好几条“No such file or directory”异常,都是使用poi的SXXFWorkbook生成excel文件时抛出的。根据异常信息,定位到了TempFile这个类里。
                    

 if (this.dir == null) {
    this.dir = new File(System.getProperty("java.io.tmpdir"),
      "poifiles");
    this.dir.mkdir();
    if (System.getProperty("poi.keep.tmp.files") == null) {
     this.dir.deleteOnExit();
    }
   }
   File newFile = File.createTempFile(prefix, suffix, this.dir);

      从异常信息来看应该是this.dir文件目录不存在导致,立马到/tmp目录下查证,果然poifiles子目录已经消失了。这可奇怪了,这个目录怎么会平白无故消失了,SXXFWorkbook在很多项目用了很多年都没有问题,怎么这次就莫名其妙的消失了。用histroy命令没有发现当前用户有删除操作和list reboot看看最近有没有重启(PS服务器是运行中心搭建的,我们只能只用一个只有很小权限的用户进行上线),搜索下代码也没有发现有主动的delete。真是奇了!!!
      只能想想/tmp目录是否有自动清理机制,但要是有自动清理机制,其他的项目早就出问题了。但也只能死马当活马医,查看了下/etc/cron.daily/tmpwatch
      

    flags=-umc
    /usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
            -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
            -X '/tmp/hsperfdata_*' 10d /tmp
    /usr/sbin/tmpwatch "$flags" 30d /var/tmp
    for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
        if [ -d "$d" ]; then
            /usr/sbin/tmpwatch "$flags" -f 30d "$d"
        fi
    done

      果然/tmp目录下的应用产生的文件和目录10天没有修改就会被删除,而我们的这个系统和之前系统的一个最大差别正是使用频次。出问题的系统只在每个月的前5个工作日有业务人员使用,这样自然导致poi生成的poifiles目录在下一次使用之前就会被删除掉。
      问题原因已经找到了,接下来只好拜托运行中心的兄弟们帮忙将poifiles加入到排除目录即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值