proofpoint/platform — pull request #301 by johngmyers (2014-03-07 20:44:37+00:00)
Title: Fix threading bug in ReportCollectionFactory

Fix threading bug in ReportCollectionFactory

The RemovalListener for a Gauva LoadingCache is run after the lock is dropped,
so an expired object could be reinserted and re-registered before the removal
listener could de-register it.

Use additional data structures to detect this case and prevent the duplicate
registration and subsequent deregistration.