Danny Chen, Bloomberg LP
Sometimes we are delivered software that doesn't do exactly what we want and we have to find ways to modify its behavior. Many times we wind up "wrapping" the software. But modern language run times provide mechanisms for overriding the behavior of software after it has been built and delivered/deployed (e.g. inversion of control and dynamic wiring in Java, monkey patching in python). Shared library-based software on UNIX systems have long enjoyed similar capabilities via interposers—functionality that is relatively under-utilized by testers, SAs, and SREs.
In this talk, we present how we used a C library interposer to convert the attachment store of JIRA from being filesystem-based into a two-level store—with the filesystem being merely a cache for a cloud-based store. In a sense, we changed the behavior of the system underneath JIRA to change JIRA's behavior. This implementation gives us local filesystem performance (mostly) for attachment stores with near-infinite capacity for attachments as well as added resiliency (from the use of the cloud-based store).
We also present some other examples of how we have used interposers to support testing and monitoring.
Danny Chen, Bloomberg LP
Danny Chen started his career almost 40 years ago as a UNIX performance engineer at Bell Laboratories where he was a co-developer of one of first general purpose UNIX kernel tracing facilities (USENIX/1988: CASPER the Friendly Daemon). He also contributed performance improvements to the SVR4 virtual memory implementation (USENIX/1990: "Insuring Improved VM Performance - Some No-Fault Policies). He has worked on low latency market data systems, messaging systems, distributed transaction management, capacity planning, and enterprise systems monitoring.
Open Access Media
USENIX is committed to Open Access to the research presented at our events. Papers and proceedings are freely available to everyone once the event begins. Any video, audio, and/or slides that are posted after the event are also free and open to everyone. Support USENIX and our commitment to Open Access.
author = {Danny Chen},
title = {Pardon the {Interposition{\textemdash}Modifying} and Improving Software Behavior with Interposers},
year = {2019},
address = {Portland, OR},
publisher = {USENIX Association},
month = oct
}