FSDirectory详解:配置和变量

This commit is contained in:
LingZhaoHui 2024-04-08 23:57:38 +08:00
parent a2aff039db
commit b83b0dcf04
Signed by: zeekling
GPG Key ID: D96E4E75267CA2CC

View File

@ -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 实现逻辑**