Retro has the ability to instrument locks in Java, including regular
ReadWriteLock and monitor locks (eg, use of the
synchronized keyword). However, due to the prevalent use of monitor locks in many Java applications, and because lock instrumentation can be delicate, it is disabled by default except for a few specially selected HDFS locks.
To enable lock instrumentation, build the
retro/aspects project with the
mvn clean package install -Plocks
This will instrument any
java.util.concurrent.lock.Lock and any use of the
This should be used carefully. Most locks should not be instrumented, only those that that are bottlenecks in the system. Our recommendation is to enable all lock instrumentation so that you can run the system and identify the subset of important locks. Then extend Retro to instrument only those locks. See the
XHDFS.aj aspect in
retro/aspects for example usage in HDFS.