Vladimir Ozerov created IGNITE-2810:
---------------------------------------
Summary: IGFS: Stripe TRASH directory.
Key: IGNITE-2810
URL: https://issues.apache.org/jira/browse/IGNITE-2810
Project: Ignite
Issue Type: Task
Components: IGFS
Affects Versions: 1.5.0.final
Reporter: Vladimir Ozerov
Priority: Critical
Fix For: 1.7
*Problem*
Currently remove operation on IGFS performs soft-delete which essentially moves
a file/dir to a special hidden "TRASH" directory. Later on, special worker
inspects this directory and finally removes actual meta and data entities.
As *move* operation requires lock on parent directory, massive removes will
lead to high contention on TRASH key, yielding poor performance due to no
parallelization.
*Solution*
Let's stripe trash directory. That is, we will create several (e.g. 16) trash
directories. When entity is to be removed, we will pick random trash and move
entitty there.
Delete worker will have to inspect all these directories.
Note that each node will have to know maximum numbers of trash directories, so
it knows how to list it with little or no coordination with other nodes. To
achieve this we can expose "trashCount" property to
{{FileSystemConfiguration}}. Normally user will not change it. Each node will
set up a discovery listener which will track new nodes and will know maximum
amount of trashes.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)