FSDirectory详解:配置和变量 #24
@ -49,11 +49,29 @@ FSDirectory的操作则全部是在内存中进行的, 并不进行editlog的
|
||||
|
||||
### 删除
|
||||
|
||||
接口:
|
||||
**接口**:
|
||||
|
||||
```java
|
||||
boolean delete(String src, boolean recursive, boolean logRetryCache) throws IOException {}
|
||||
```
|
||||
|
||||
**简介**
|
||||
|
||||
删除文件或者文件夹,如果删除文件夹参数recursive必须为true。
|
||||
|
||||
**实现逻辑**
|
||||
|
||||
- 1、检查是否有写权限。具体可查看`checkOperation(OperationCategory.WRITE)`;
|
||||
- 2、加全局锁。
|
||||
- 3、再次检查是否有写权限。
|
||||
- 4、调用FSDirDeleteOp.delete删除目录或者文件。
|
||||
```java
|
||||
toRemovedBlocks = FSDirDeleteOp.delete(this, pc, src, recursive, logRetryCache);
|
||||
```
|
||||
- 5、释放全局锁。
|
||||
- 6、同步editlog,并且记录审计日志。
|
||||
- 7、将需要删除的块`toRemovedBlocks`添加到`markedDeleteQueue`队列里面,等待异步删除。
|
||||
|
||||
**FSDirDeleteOp.delete 实现逻辑**
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user