-
Notifications
You must be signed in to change notification settings - Fork 557
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ChunkServerImpl::RemoveObsoleteBlocks会删除正在写的文件 #31
Comments
问题应该在sdk,在还有BackgroundWrite运行时,就close成功了,导致文件被删除后还在写。 |
我下午复现一下这个问题。 |
我初步的认为情况可能是这样的: |
解决方案很简单,只要在WritNextCallBack中FindBlock前判断一下seq是否为0即可。 |
这里有两种场景
|
从发起文件删除命令,到block被真正在chunkserver上删除,至少要经过一次block report的时间,也就是60s。chunkserver上的block是在16:59被删除的,16:58附近nameserver上的LOG有吗?以及SDK部分的LOG |
seq为428的packet长度为0,说明之前的所有包都已经被写完了,调用close时发送了一个空的包。在这个时间点附近应该可以找到bfs_wrapper中close file的LOG |
seq为427的packet长度为49603,不是256 * 1024的整数倍,而且后面seq为428的packet长度为0,说明文件是在sync之后紧接着被close的。 |
这个周末我出去了,今天我继续跟进下这个问题。 |
上层应用在Close返回之前,就删除了文件,导致还未完成的写操作失败。当前解决方法是针对写操作中的失败,设置后台错误标志,在用户进行下次close或者sync时返回失败。 |
从日志分析看,16:59:03时,block被ChunkServerImpl::RemoveObsoleteBlocks给删了,具体原因我还没找到:
chunkserver日志:
05/27 16:59:02.873031 30287 [src/chunkserver/chunkserver_impl.cc:685] Writeblock send [bid:10015, seq:427] to next yq01-tera64.yq01.baidu.com:8825
05/27 16:59:02.873835 30253 [src/chunkserver/chunkserver_impl.cc:729] Writeblock send [bid:10015, seq:427] to next done
05/27 16:59:02.873874 30253 [src/chunkserver/chunkserver_impl.cc:752] WriteBlock done [bid:10015, seq:427, offset:28667909, len:49603]
05/27 16:59:02.930921 30285 [src/chunkserver/chunkserver_impl.cc:653] [WriteBlock] [bid:10015, seq:428, offset:28717512, len:0] 1432717142922856
05/27 16:59:02.930941 30285 [src/chunkserver/chunkserver_impl.cc:685] Writeblock send [bid:10015, seq:428] to next yq01-tera64.yq01.baidu.com:8825
05/27 16:59:03.606987 30256 [src/chunkserver/chunkserver_impl.cc:729] Writeblock send [bid:10015, seq:428] to next done
05/27 16:59:03.615835 30286 [src/chunkserver/chunkserver_impl.cc:487] Remove meta info done: 10015
05/27 16:59:03.621214 30286 [src/chunkserver/chunkserver_impl.cc:104] Block 10015 deleted
05/27 16:59:03.730070 30256 [src/chunkserver/chunkserver_impl.cc:203] Write block 10015 offset[28717512] block_size[0] not in sliding window
05/27 16:59:03.735733 30285 [src/chunkserver/chunkserver_impl.cc:653] [WriteBlock] [bid:10015, seq:428, offset:28717512, len:0] 1432717142922856
The text was updated successfully, but these errors were encountered: