FSDirectory详解:配置和变量 #24
@ -49,11 +49,29 @@ FSDirectory的操作则全部是在内存中进行的, 并不进行editlog的
|
|||||||
|
|
||||||
### 删除
|
### 删除
|
||||||
|
|
||||||
接口:
|
**接口**:
|
||||||
|
|
||||||
```java
|
```java
|
||||||
boolean delete(String src, boolean recursive, boolean logRetryCache) throws IOException {}
|
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