Correctness of Request Executions in Online Updates of Concurrent Object Oriented Programs

Online update is a technique that reduces the disruption caused by a software update. It does so by applying a patch to a running process as opposed to shutting down the process and restarting it. The challenge here lies in ensuring correct operation during and after the update. In this paper, we present the correctness criteria involved in such situations and a solution to performing updates safely based on these correctness criteria. The approach we use avoids deadlocks during update by analyzing interthread dependencies and guarantees that the process remains in a consistent state after the update. Thus, the update procedure is guaranteed to terminate and the requests that execute during and after an update are ensured correct execution. Our literature survey reveals that this is amongst the first solutions to update concurrent programs while requests are executing and ensure correctness.

[1]  Dominic Duggan,et al.  Type-based hot swapping of running modules , 2005, Acta Informatica.

[2]  Robert S. Fabry,et al.  How to design a system in which modules can be changed on the fly , 1976, ICSE '76.

[3]  Yogesh Murarka,et al.  Correctness of Request Executions in Online Updates of Concurrent Programs , 2008 .

[4]  I. Lee,et al.  DYMOS: a dynamic modification system , 1983, SIGSOFT '83.

[5]  Ophir Frieder,et al.  On dynamically updating a computer program: From concept to prototype , 1991, J. Syst. Softw..

[6]  Neil D. Jones,et al.  Program flow analysis - theory and applications , 1981, Prentice Hall software series.

[7]  Umesh Bellur,et al.  Safety Analysis for Dynamic Update of Object Oriented Programs , 2006, 2006 13th Asia Pacific Software Engineering Conference (APSEC'06).

[8]  Liuba Shrira,et al.  Modular Software Upgrades for Distributed Systems , 2006, ECOOP.

[9]  Jeff Magee,et al.  The Evolving Philosophers Problem: Dynamic Change Management , 1990, IEEE Trans. Software Eng..

[10]  Mikhail Dmitriev,et al.  Safe class and data evolution in large and long-lived Java applications , 2001 .

[11]  Michael Hicks,et al.  Contextual effects for version-consistent dynamic software updating and safe concurrent programming , 2008, POPL '08.

[12]  Laurie J. Hendren,et al.  Practical virtual method call resolution for Java , 2000, OOPSLA '00.

[13]  Scott Nettles,et al.  Dynamic software updating , 2001, PLDI '01.

[14]  Liuba Shrira,et al.  Lazy modular upgrades in persistent object stores , 2003, OOPSLA '03.

[15]  Toby Bloom,et al.  Reconfiguration and module replacement in Argus: theory and practice , 1993, Softw. Eng. J..

[16]  Laurie Hendren,et al.  Soot---a java optimization framework , 1999 .

[17]  Gavin M. Bierman,et al.  Mutatis Mutandis: Safe and predictable dynamic software updating , 2007, TOPL.

[18]  Insup Lee,et al.  DYMOS: a dynamic modification system , 1983 .

[19]  Deepak Gupta,et al.  On Line Software Version Change , 1994 .

[20]  Haibo Chen,et al.  POLUS: A POwerful Live Updating System , 2007, 29th International Conference on Software Engineering (ICSE'07).

[21]  Neil D. Jones,et al.  Program Flow Analysis: Theory and Application , 1981 .