A major challenge facing grid applications is the appropriate handling of failures. In this paper we address the problem of making parallel Java applications based on Remote Method Invocation (RMI) fault tolerant in a way transparent to the programmer. We use globally consistent checkpointing to avoid having to restart long-running computations from scratch after a system crash. The application’s execution state can be captured at any time also when some of the application’s threads are blocked waiting for the result of a (nested) remote method call. We modify only the program’s bytecode which makes our solution independent from a particular Java Virtual Machine (JVM) implementation. The bytecode transformation algorithm performs a compile time analysis to reduce the number of modifications in the application’s code which has a direct impact on the application’s performance. The fault tolerance extensions encompass also the RMI components such as the RMI registry. Since esse...
Pawel Garbacki, Bartosz Biskupski, Henri E. Bal