ignite-dev mailing list archives

IGFS behavior when node is stopping, but there are active file writes.

Date

Fri, 10 Apr 2015 07:58:06 GMT

Hi,
Currently in case IGFS is writting a file (i.e. an output stream is opened)
and concurrent node stop is requested, we do not wait for these writes to
finish, but simply stops the node. This could potentially lead to
corrupted, partially written data.
Better approach is to wait for file write finish in case "cancel" flag is
false, and to stop immediately in case "cancel" flag is true.
But the problem is that a file could be opened for write indefinetly (e.g.
a kind of logging facility constantly writing to a file). As a result if
someone wants to perform gracefull node shutdown for some administrative
tasks and this "eternal" file write had happened to occur on this node, the
only option is to forcefully shutdown the node what can still lead to data
corruption.
I think we must think about the following:
1) Add cross-cache transactions for meta/data cache updates. E.g. now it is
possible that file length in meta cache is updated, but block in data cache
doesn't (e.g. due to node stop between these two actions).
2) Add ability to configure backups for data cache. Currently for some
reason we prevents user from doing it. As a result, there is no
fault-tolerance at all for PRIMARY mode.
3) Optionally wait for output streams close on node stop. May be with some
sensible configurable timeout.
Thoughts?
Vladimir.