sonatype/nexus — pull request #233 by cstamas (2012-01-27 16:39:36+00:00)
Title: Attribute related fixes

This pull request contains following substantial fixes:

* (F1) TransitioningAttributeStorage made less eager. Fix made attribute-related IO ops from "read, read, write, delete" to "read, read" (worst cases).
* (F2) RecreateAttributesWalker operated on groups too, hence, group member repositories was walked for upgrade multiple times.
* (F3) RecreateAttributesWalker was forcing re-checksumming.
* (F4) on upgrade, attribute save happens only when it originates from "legacy" store (ie. partially upgraded repository will perform saves only on non-upgraded attributes).

And some other minor improvements regarding overall IO load of upgrade.

This pull request contains following major improvements:

* Nexus Core Walker component supports walk-throttling, it is possible to "interfere" with walking speed from now on (by slowing it down, not by walking faster than your HW is capable of! ;)
* Two out-of-the-box throttle controllers implemented: "fixed rate" and "adaptive" (the 2nd is TBD, not yet implemented!).
* AttributeUpgrader component exposed over JMX, and properties like maxTPS are even settable live during upgrade. Also, the upgrade process itself can be invoked/started over JMX (ie. you defer upgrade auto-start by system property to be able to set up for proper JMX monitoring).
* NumberSequence got new member: "linear" number sequence, and it's API is enhanced (got prev() method for stepping back).

The "initial" maxTPS value is set to 100 upgrade/sec, which would upgrade Central repository hosted in Nexus in 5 hours. But, again, the maxTPS is settable over JMX.