Dependency safety for Java – Implementing and testing failboxes

Dan Zhang, Dragan Bošnački, Mark van den Brand, Cornelis Huizing, Bart Jacobs, Ruurd Kuiper, Anton Wijs*

*Corresponding author for this work

    Research output: Contribution to journalArticleAcademicpeer-review

    Abstract

    Exception mechanisms help to ensure that a program satisfies the important robustness criterion of dependency safety: if an operation fails in an execution sequence, any code depending on the successful completion of this operation should also fail in a controlled way. However, the exception handling mechanisms available in languages like Java do not provide a structured way to achieve dependency safety. The language extension failbox provides dependency safety in a compositional manner. Asynchronous exceptions occurring inside the failbox code are a serious challenge in achieving dependency safety. In this article we present a Java implementation which deals with this challenge by developing failboxes incrementally, through four increasingly robust iterations. For each incremental implementation step we analyze the vulnerabilities and argue the remedies in the next implementation. We also present a testing approach to investigate whether the vulnerabilities are realistic and the remedies proposed are effective. This testing approach enables us to generate asynchronous exceptions in a controlled manner for concurrent programs and the tests are repeatable in that they give the same results for runs that may differ in scheduling, even on different platforms.

    Original languageEnglish
    Article number102316
    JournalScience of computer programming
    Volume184
    DOIs
    Publication statusPublished - 1 Oct 2019

    Keywords

    • Concurrency
    • Exception handling
    • Failboxes
    • Java

    Fingerprint

    Dive into the research topics of 'Dependency safety for Java – Implementing and testing failboxes'. Together they form a unique fingerprint.

    Cite this