sonatype/nexus — pull request #119 by cstamas (2011-12-01 14:30:19+00:00)
Title: NEXUS-4682: decouple shadows from master repositories.

Today, as many shadows (UI calls them "virtuals") you have against one master repository, the slow-down adds up to master repository slowdown, since all the content changes in shadows are done synchronously.

Before this change, shadow implementations were using the "low level" eventing in Nexus (plexus-app-events) that does not support async event handlers. This change simply "moves" shadow event processing into "high level" Nexus EventInspectors, and adds one new async EventInspector that replays the content change events asynchronously.

This way, the master repository performance is not affected (minimally is, but not in a way it was before: slowdown is not anymore linearly paired with number of shadows against it), or is minimally affected.

The fact that a M1 layouted artifact appears momentarily or few millis later when a M2 receives a deploy is not important at all.