FSDirectory详解:配置和变量 #24

Merged
zeekling merged 5 commits from fsdir into master 2024-04-13 14:10:14 +00:00
Showing only changes of commit b83b0dcf04 - Show all commits

View File

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