Derecho-Project / derecho

The main code repository for the Derecho project.
BSD 3-Clause "New" or "Revised" License
187 stars 47 forks source link

Don't create any files or logs if the application doesn't create any persisted subgroups #163

Closed KenBirman closed 4 years ago

KenBirman commented 4 years ago

It should be possible to run Derecho without creating any log files or other files if the application itself doesn't use the persistent feature in any of its subgroups. At present, the restart code always logs new views.

Weijia and Edward should give some thought to identifying all the situations in which their logic might create a file before checking to see if we will need it.

One simple way to implement this fix for Derecho v2.1 might be to leave the existing logging support in place, but put the log files in /tmpfs (we would need to avoid file-name collisions, if people run Derecho more than once on the same machine, so this perhaps needs a little thought before Edward implements the needed change).

etremel commented 4 years ago

I just double-checked, and in the current (2.0) version of Derecho, the view management and restart code does not log new views or ragged trims if there are no persistent objects. You can see that throughout view_manager.cpp, any instruction to log a view to disk is guarded by a check to see if persistence is being used by any subgroup (for example, here). Also, you can try running the demo application simple_replicated_objects.cpp, which uses replicated objects that do not have any persistent fields, and confirm that no ".plog" directory is created after the program runs successfully.

I'm not sure what else could be attempting to create a file when a group doesn't use persistence, but I am confident that it's not view logging for restart purposes.