buaazp / zimg

A lightweight and high performance image storage and processing system.
http://zimg.buaa.us
BSD 3-Clause "New" or "Revised" License
2.69k stars 403 forks source link

zimg上传图片成功,但没有保存图片 #64

Closed ccstorm closed 9 years ago

ccstorm commented 9 years ago

后台使用服务上传,返回成功,但是实际zimg未把图片存下来。 [root@MapEngine_SDB_54 ~]# cd /zimg/img/ [root@MapEngine_SDB_54 img]# find -name e2f5d61a393092aefb5094a5b5074731 ./907/373/e2f5d61a393092aefb5094a5b5074731 [root@MapEngine_SDB_54 img]# ls 907/373/e2f5d61a393092aefb5094a5b5074731/ [root@MapEngine_SDB_54 img]# 图片目录下为空 日志中关于该文件的记录没有打印失败,但有zimg重启动的记录。我使用supervisor监控的 重启后又有多次保存,但都失败了

第一次保存

2015/01/28 17:39:47:951836 [DEBUG] Method: 2
2015/01/28 17:39:47:951856 [DEBUG] evblen = 24576
2015/01/28 17:39:47:951982 [DEBUG] evblen = 24576
2015/01/28 17:39:47:952084 [DEBUG] rmblen = 24576
2015/01/28 17:39:47:952102 [DEBUG] rmblen = 24576
2015/01/28 17:39:47:952205 [DEBUG] Begin to Save Image...
2015/01/28 17:39:47:952296 [DEBUG] Begin to Caculate MD5...
2015/01/28 17:39:47:952535 [DEBUG] md5: e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:47:952794 [DEBUG] save_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:48:561427 [DEBUG] File[/zimg/script/process.lua] is A File.
2015/01/28 17:39:48:561596 [DEBUG] Path[/zimg/img] is A Dir.
2015/01/28 17:39:48:561639 [DEBUG] Paths Init Finished.
2015/01/28 17:39:48:599782 [DEBUG] Begin to Start Httpd Server...
2015/01/28 17:39:48:599883 [INFO] zimg started
2015/01/28 17:39:48:600659 [DEBUG] thr_args alloc
2015/01/28 17:39:48:600785 [DEBUG] luaL_newstate alloc
2015/01/28 17:39:48:605722 [DEBUG] thr_args alloc
2015/01/28 17:39:48:613873 [DEBUG] thr_args alloc
2015/01/28 17:39:48:614007 [DEBUG] luaL_newstate alloc
2015/01/28 17:39:48:614094 [DEBUG] luaL_newstate alloc
2015/01/28 17:39:48:616168 [DEBUG] thr_args alloc
2015/01/28 17:39:48:616346 [DEBUG] zimg_lua: zimg using lua script.
2015/01/28 17:39:48:616375 [DEBUG] zimg_lua: zimg using lua script.

2015/01/28 17:39:50:959955 [DEBUG] Method: 2
2015/01/28 17:39:50:960092 [DEBUG] evblen = 24576
2015/01/28 17:39:50:960185 [DEBUG] rmblen = 24576
2015/01/28 17:39:50:960284 [DEBUG] Begin to Save Image...
2015/01/28 17:39:50:960377 [DEBUG] Begin to Caculate MD5...
2015/01/28 17:39:50:960582 [DEBUG] md5: e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:960646 [DEBUG] save_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:960714 [DEBUG] Path[/zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731] is A Dir.
2015/01/28 17:39:50:960824 [DEBUG] Check File Exist. Needn't Save.
2015/01/28 17:39:50:960876 [INFO] 172.16.0.53 succ post pic:e2f5d61a393092aefb5094a5b5074731 size:24576
2015/01/28 17:39:50:960947 [DEBUG] ret_str_unformat: {"ret":true,"info":{"md5":"e2f5d61a393092aefb5094a5b5074731","size":24576}}
2015/01/28 17:39:50:961061 [DEBUG] ============post_request_cb() DONE!===============
2015/01/28 17:39:50:961217 [DEBUG] Method: 2
2015/01/28 17:39:50:961320 [DEBUG] evblen = 24576
2015/01/28 17:39:50:961478 [DEBUG] Method: 2
2015/01/28 17:39:50:961530 [DEBUG] rmblen = 24576
2015/01/28 17:39:50:961702 [DEBUG] evblen = 24576
2015/01/28 17:39:50:961748 [DEBUG] Method: 2
2015/01/28 17:39:50:961845 [DEBUG] Method: 2
2015/01/28 17:39:50:961879 [DEBUG] Begin to Save Image...
2015/01/28 17:39:50:962030 [DEBUG] Method: 2
2015/01/28 17:39:50:962093 [DEBUG] evblen = 24576
2015/01/28 17:39:50:962159 [DEBUG] rmblen = 24576
2015/01/28 17:39:50:962205 [DEBUG] Method: 2
2015/01/28 17:39:50:962278 [DEBUG] Method: 2
2015/01/28 17:39:50:962301 [DEBUG] Method: 2
2015/01/28 17:39:50:962301 [DEBUG] Method: 2
2015/01/28 17:39:50:962403 [DEBUG] Begin to Save Image...
2015/01/28 17:39:50:962469 [DEBUG] Method: 2
2015/01/28 17:39:50:962514 [DEBUG] evblen = 24576
2015/01/28 17:39:50:962586 [DEBUG] evblen = 24576
2015/01/28 17:39:50:962604 [DEBUG] evblen = 24576
2015/01/28 17:39:50:962655 [DEBUG] rmblen = 24576
2015/01/28 17:39:50:962758 [DEBUG] Begin to Caculate MD5...
2015/01/28 17:39:50:962725 [DEBUG] evblen = 24576
2015/01/28 17:39:50:962808 [DEBUG] evblen = 24576
2015/01/28 17:39:50:962832 [DEBUG] evblen = 24576
2015/01/28 17:39:50:962849 [DEBUG] Begin to Save Image...
2015/01/28 17:39:50:962924 [DEBUG] Begin to Caculate MD5...
2015/01/28 17:39:50:962994 [DEBUG] evblen = 24576
2015/01/28 17:39:50:962951 [DEBUG] rmblen = 24576
2015/01/28 17:39:50:963100 [DEBUG] rmblen = 24576
2015/01/28 17:39:50:963210 [DEBUG] Begin to Caculate MD5...
2015/01/28 17:39:50:963262 [DEBUG] rmblen = 24576
2015/01/28 17:39:50:963265 [DEBUG] rmblen = 24576
2015/01/28 17:39:50:963321 [DEBUG] Begin to Save Image...
2015/01/28 17:39:50:963406 [DEBUG] rmblen = 24576
2015/01/28 17:39:50:963457 [DEBUG] md5: e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:963439 [DEBUG] Begin to Save Image...
2015/01/28 17:39:50:963496 [DEBUG] rmblen = 24576
2015/01/28 17:39:50:963537 [DEBUG] rmblen = 24576
2015/01/28 17:39:50:963583 [DEBUG] Begin to Save Image...
2015/01/28 17:39:50:963624 [DEBUG] Begin to Save Image...
2015/01/28 17:39:50:963742 [DEBUG] md5: e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:963709 [DEBUG] Begin to Save Image...
2015/01/28 17:39:50:963795 [DEBUG] Begin to Save Image...
2015/01/28 17:39:50:963837 [DEBUG] Begin to Caculate MD5...
2015/01/28 17:39:50:963875 [DEBUG] Begin to Save Image...
2015/01/28 17:39:50:963887 [DEBUG] Begin to Caculate MD5...
2015/01/28 17:39:50:963943 [DEBUG] md5: e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:963964 [DEBUG] Begin to Caculate MD5...
2015/01/28 17:39:50:963944 [DEBUG] Begin to Caculate MD5...
2015/01/28 17:39:50:964054 [DEBUG] Begin to Caculate MD5...
2015/01/28 17:39:50:964099 [DEBUG] Begin to Caculate MD5...
2015/01/28 17:39:50:964176 [DEBUG] save_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:964201 [DEBUG] save_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:964226 [DEBUG] save_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:964257 [DEBUG] Begin to Caculate MD5...
2015/01/28 17:39:50:964362 [DEBUG] md5: e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:964333 [DEBUG] md5: e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:964401 [DEBUG] md5: e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:964455 [DEBUG] Path[/zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731] is A Dir.
2015/01/28 17:39:50:964475 [DEBUG] Path[/zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731] is A Dir.
2015/01/28 17:39:50:964493 [DEBUG] Path[/zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731] is A Dir.
2015/01/28 17:39:50:964511 [DEBUG] md5: e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:964523 [DEBUG] save_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:964648 [DEBUG] save_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:964626 [DEBUG] save_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:964669 [DEBUG] md5: e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:964673 [DEBUG] md5: e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:964703 [DEBUG] md5: e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:964827 [DEBUG] Check File Exist. Needn't Save.
2015/01/28 17:39:50:964848 [DEBUG] Check File Exist. Needn't Save.
2015/01/28 17:39:50:964897 [DEBUG] Path[/zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731] is A Dir.
2015/01/28 17:39:50:964958 [DEBUG] Path[/zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731] is A Dir.
2015/01/28 17:39:50:964997 [DEBUG] Path[/zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731] is A Dir.
2015/01/28 17:39:50:964975 [DEBUG] save_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:965021 [DEBUG] save_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:965111 [INFO] 172.16.0.53 succ post pic:e2f5d61a393092aefb5094a5b5074731 size:24576
2015/01/28 17:39:50:965148 [DEBUG] Check File Exist. Needn't Save.
2015/01/28 17:39:50:965162 [DEBUG] Check File Exist. Needn't Save.
2015/01/28 17:39:50:965181 [DEBUG] Check File Exist. Needn't Save.
2015/01/28 17:39:50:965182 [INFO] 172.16.0.53 succ post pic:e2f5d61a393092aefb5094a5b5074731 size:24576
2015/01/28 17:39:50:965355 [DEBUG] Check File Exist. Needn't Save.
2015/01/28 17:39:50:965327 [DEBUG] Path[/zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731] is A Dir.
2015/01/28 17:39:50:965345 [DEBUG] save_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:965367 [DEBUG] save_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731
2015/01/28 17:39:50:965374 [DEBUG] ret_str_unformat: {"ret":true,"info":{"md5":"e2f5d61a393092aefb5094a5b5074731","size":24576}}
2015/01/28 17:39:50:965483 [INFO] 172.16.0.53 succ post pic:e2f5d61a393092aefb5094a5b5074731 size:24576
2015/01/28 17:39:50:965515 [INFO] 172.16.0.53 succ post pic:e2f5d61a393092aefb5094a5b5074731 size:24576
2015/01/28 17:39:50:965555 [DEBUG] ret_str_unformat: {"ret":true,"info":{"md5":"e2f5d61a393092aefb5094a5b5074731","size":24576}}
2015/01/28 17:39:50:965554 [DEBUG] Check File Exist. Needn't Save.
2015/01/28 17:39:50:965592 [INFO] 172.16.0.53 succ post pic:e2f5d61a393092aefb5094a5b5074731 size:24576
2015/01/28 17:39:50:965638 [DEBUG] ============post_request_cb() DONE!===============

2015/01/28 17:39:50:965723 [DEBUG] Path[/zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731] is A Dir.
2015/01/28 17:39:50:965714 [INFO] 172.16.0.53 succ post pic:e2f5d61a393092aefb5094a5b5074731 size:24576
2015/01/28 17:39:50:965746 [DEBUG] Path[/zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731] is A Dir.
2015/01/28 17:39:50:965787 [DEBUG] Path[/zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731] is A Dir.
2015/01/28 17:39:50:965788 [DEBUG] ret_str_unformat: {"ret":true,"info":{"md5":"e2f5d61a393092aefb5094a5b5074731","size":24576}}
2015/01/28 17:39:50:965908 [DEBUG] ret_str_unformat: {"ret":true,"info":{"md5":"e2f5d61a393092aefb5094a5b5074731","size":24576}}
2015/01/28 17:39:50:965970 [DEBUG] Check File Exist. Needn't Save.
2015/01/28 17:39:50:965959 [DEBUG] ============post_request_cb() DONE!===============
2015/01/28 17:39:50:966004 [DEBUG] ret_str_unformat: {"ret":true,"info":{"md5":"e2f5d61a393092aefb5094a5b5074731","size":24576}}
2015/01/28 17:39:50:966007 [INFO] 172.16.0.53 succ post pic:e2f5d61a393092aefb5094a5b5074731 size:24576
2015/01/28 17:39:50:966146 [DEBUG] ============post_request_cb() DONE!===============
2015/01/28 17:39:50:966158 [DEBUG] ret_str_unformat: {"ret":true,"info":{"md5":"e2f5d61a393092aefb5094a5b5074731","size":24576}}
2015/01/28 17:39:50:966187 [INFO] 172.16.0.53 succ post pic:e2f5d61a393092aefb5094a5b5074731 size:24576
2015/01/28 17:39:50:966243 [DEBUG] Check File Exist. Needn't Save.
2015/01/28 17:39:50:966275 [DEBUG] ret_str_unformat: {"ret":true,"info":{"md5":"e2f5d61a393092aefb5094a5b5074731","size":24576}}
2015/01/28 17:39:50:966286 [DEBUG] ============post_request_cb() DONE!===============
2015/01/28 17:39:50:966306 [DEBUG] ============post_request_cb() DONE!===============
2015/01/28 17:39:50:966328 [DEBUG] ============post_request_cb() DONE!===============
2015/01/28 17:39:50:966393 [DEBUG] Check File Exist. Needn't Save.
2015/01/28 17:39:50:966490 [DEBUG] ============post_request_cb() DONE!===============
2015/01/28 17:39:50:966487 [INFO] 172.16.0.53 succ post pic:e2f5d61a393092aefb5094a5b5074731 size:24576
2015/01/28 17:39:50:966527 [DEBUG] ret_str_unformat: {"ret":true,"info":{"md5":"e2f5d61a393092aefb5094a5b5074731","size":24576}}
2015/01/28 17:39:50:966609 [DEBUG] ret_str_unformat: {"ret":true,"info":{"md5":"e2f5d61a393092aefb5094a5b5074731","size":24576}}
2015/01/28 17:39:50:966649 [INFO] 172.16.0.53 succ post pic:e2f5d61a393092aefb5094a5b5074731 size:24576
2015/01/28 17:39:50:966718 [DEBUG] ============post_request_cb() DONE!===============
2015/01/28 17:39:50:966733 [DEBUG] ============post_request_cb() DONE!===============
2015/01/28 17:39:50:966752 [DEBUG] ret_str_unformat: {"ret":true,"info":{"md5":"e2f5d61a393092aefb5094a5b5074731","size":24576}}
2015/01/28 17:39:50:966853 [DEBUG] ============post_request_cb() DONE!===============

上传后再次访问失败

2015/01/28 18:18:10:702155 [DEBUG] ============get_request_cb() DONE!===============
2015/01/28 18:18:13:514974 [DEBUG] Method: 0
2015/01/28 18:18:13:515208 [DEBUG] Got a GET request for </e2f5d61a393092aefb5094a5b5074731>
2015/01/28 18:18:13:515259 [DEBUG] md5 of request is <e2f5d61a393092aefb5094a5b5074731>
2015/01/28 18:18:13:515324 [DEBUG] get_img() start processing zimg request...
2015/01/28 18:18:13:515377 [DEBUG] whole_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731
2015/01/28 18:18:13:515422 [DEBUG] Path[/zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731] is A Dir.
2015/01/28 18:18:13:515471 [DEBUG] key: e2f5d61a393092aefb5094a5b5074731:360:0:1:0:-1:-1:0:75:jpeg
2015/01/28 18:18:13:515507 [DEBUG] Start to Find the Image...
2015/01/28 18:18:13:515543 [DEBUG] 0rig File Path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731/0*0
2015/01/28 18:18:13:515583 [DEBUG] Got the rsp_path: /zimg/img/907/373/e2f5d61a393092aefb5094a5b5074731/360*0_p1_g0_-1*-1_r0_q75.jpeg
2015/01/28 18:18:13:515872 [DEBUG] Not Hit Original Image Cache. Begin to Open it.
2015/01/28 18:18:13:575642 [DEBUG] Open Original Image From Disk Failed! 0 != 1
2015/01/28 18:18:13:575867 [DEBUG] Open Original Image From Disk Failed!
2015/01/28 18:18:13:576058 [DEBUG] zimg Requset Get Image[MD5: e2f5d61a393092aefb5094a5b5074731] Failed!
2015/01/28 18:18:13:576124 [ERROR] 172.16.0.53 fail pic:e2f5d61a393092aefb5094a5b5074731 w:360 h:0 p:1 g:0 x:-1 y:-1 r:0 q:75 f:jpeg
2015/01/28 18:18:13:576233 [DEBUG] ============get_request_cb() ERROR!===============
ccstorm commented 9 years ago

还发现一个问题,同一个图片,后台服务post上传和直接页面上传产生的md5竟然不一样

buaazp commented 9 years ago

第一个问题是,第一次上传这个图片的时候把文件夹建好了,在write文件的时候失败了,而且zimg发生coredump,而后又有多次上传,结果检测到这个文件夹已存在,于是认为图片已存在,直接就放弃保存了。

这儿确实是一个bug,文件夹存在不能证明文件存在,需要修改。

至于写文件失败的问题,看log还发现不了什么线索,我还得想办法监控一下write的结果才行。你那儿这个情况出现的频繁吗,怀疑是硬盘故障还是什么的导致系统调用失败。

最后关于multipart/form和binary上传md5不一致的问题,你可以把这个图传到 http://demo.buaa.us 上并且留下其md5给我,我来重试复现。

ccstorm commented 9 years ago

硬盘应该没有故障吧,就这一个文件发现有问题。关键的问题是上传结果返回了成功。这样就导致我认为图片上传成功了,最后引用的地址是图片不存在。 那个图片已经上传好了。md5是0e2dd0ac3b33b2e3f6d932eaf738dbdb 后台服务上传的就是上面日志可以看到的:e2f5d61a393092aefb5094a5b5074731

buaazp commented 9 years ago

两个问题,我分开来讲一个一个说。

Q1:『关键的问题是上传结果返回了成功。这样就导致我认为图片上传成功了,最后引用的地址是图片不存在。』

原因是第一次上传的时候,建好了目录,但是还没来得及写好文件,zimg就退出了,我又查看了一下log,没有任何报错,也没有开始写文件的log,说明不是系统调用的时候出错,而是『被kill了』。具体是什么原因被kill掉了,目前无法得知。后面的上传,之所以会返回成功,是因为判断逻辑有缺陷,只检查了那个目录而没有检查文件是否存在,所以一直返回给你成功。这个bug我已经修改提交了。

Q2:『同一个图片,后台服务post上传和直接页面上传产生的md5竟然不一样』

我已经拿到了你这个图片,并且确认过md5正确之后,分别采用curl和网页上传,『没有发生任何错误』,全部上传成功且md5正确。你那边出错,应该是你所用的『后台服务post上传』方式不对,估计你用的是php里面的curl库吧,如果是的话,参考这个用法上传:http://fanrong33.com/archives/67.html

ccstorm commented 9 years ago

第一个问题明白了。 第二个问题,我不是php curl,是使用java编写的。POST方式提交,Content-Type写的图片的格式,也就是文件扩展名。使用outputStream直接写文件数据。

wish-pig commented 9 years ago

遇到同样的问题,图片上传,返回了MD5值,却找不到该文件。MD5值为:84d91976654b7a4029530be44f027bbf

buaazp commented 9 years ago

@wish-pig 请查看一下log并发送给我看看。

你是刚装好zimg吧?然后传完访问返回404的吧,如果是的话,应该是你的机器上imagemagick所需的库不够或者新版本的原因,还是把log贴出来我看一下吧。

longzhiyou commented 9 years ago

我也是用java中的httpclient 来post,也出现了这个问题,已经反应到上面了#115