Hi All, We have encountered a behavior of versionStorage and versionLabels which I think is bug.
*Current behavior:* 1. Create a node and make it *versionable* 2. Now create more than two versions (for example two version is *1.0* and *1.1* respectively) 3. Now add label at version 1.0 via *VersionHistory* Object (for example label is *Label_1.0*) 4. Now remove the version 1.0 via calling *removeVersion(1.0)* method of *VersionHistory* object 5. Now call method *hasVersionLabel(Label_1.0) *of versionHistory . its now returning true. *Expected behaviour:* Call to the *hasVersionLabel(Label_1.0)* of *versionHistory* should not return true because version associated with label does not exist. And removing the version should remove associated labels. If we say that *hasVersionLabel(Label_1.0)* of *versionHistory* returning true is expected behavior because label is not removed. Then call to the function getVersionByLabel(*Label_1.0) of versionHistory* will throw VersionException because version does not exist. So the repository goes into inconsistent state. *Solution proposal:* One of the solution can be that whenever consumer of versionHistory removes the version , he should be forced to remove the versionLabel first by throwing LabelExistException Another solution can be we should remove version label whenever user removes the version. Current behavior of *versionLabel* node: 1) it keeps mapping of version and labels 2) labels name should be unique for node. 3) one version can have multiple labels Sample test case is added in patch of jira *OAK-9891* I want to know what can justify this behavior. *I want to know what are the thoughts of communities regarding this .* 1) if we agree on bug , what can be best solution from above suggested approach. Any other suggestions. 2) if we disagree, what is reasoning. Rerence docs: https://developer.adobe.com/experience-manager/reference-materials/spec/jcr/2.0/15_Versioning.html [1] https://issues.apache.org/jira/browse/OAK-9891 Thanks, Arun Kumar Ram
