We identified a number of improvements to garbage collector related code to make it more robust, specifically:
1- As discussed in JCR-3340, when GC goes through nodes, it can encounter a lot of ItemStateExceptions. Currently, stack trace of these exceptions are not logged and this makes debugging difficult. Instead, ItemStateExceptions should at least be logged with full stack trace every 1 minute or so.
2- As discussed in JCR-3341, GC does not fail fast if there is a problem and it should.
3- Session usage in the GC is problematic. The session in GC is used for traversing the content and marking the binaries, but the listener in that class uses the same session as well, when a node is added. GC should rather use a separate session in onEvent() to avoid concurrent use.
4- GC listens for NODE_ADDED event for moved nodes but instead it should listen for NODE_MOVED.