[ 
https://issues.apache.org/jira/browse/HDDS-15946?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Janus Chow updated HDDS-15946:
------------------------------
    Description: 
This ticket includes the follows tasks:
|*Sub-task*|*Scope*|*Acceptance*|
|T2.1 interface + default generator|`VersionIdGenerator` interface; 
`TransactionIndexVersionIdGenerator`; the 
`ozone.om.versioning.version-id-generator` class-name config, loaded 
reflectively|shared contract test (strictly increasing / frozen / reserved ids) 
run against every generator; unknown class and class not implementing the 
interface both rejected; default generator carries no allocator state|
|T2.2 commit-time ordering check|`VersionIdAllocator`: refuse a commit whose id 
does not come after the key's current version; fall back to a versionedKeyTable 
lookup for records predating versioning|increasing id accepted; id at or below 
the current one rejected with `INVALID_REQUEST`; taken id on a pre-versioning 
record rejected with `KEY_ALREADY_EXISTS`; steady state performs no lookup 
(unit test asserts versionedKeyTable is never touched)|
|T2.3 pinned-first generator|`PinnedFirstVersionIdGenerator`: first-version 
detection (no current in keyTable) + `FIRST_VERSION_ID = 1` sentinel|first PUT 
gets the sentinel, later PUTs get transaction indexes; sentinel sorts before 
every transaction index; sentinel does not collide with the null slot; 
selectable by configuration|

  was:
This ticket includes the follows tasks:
|*Sub-task*|*Scope*|*Acceptance*|
| T2.1 interface + default generator | `VersionIdGenerator` interface; 
`TransactionIndexVersionIdGenerator`; the 
`ozone.om.versioning.version-id-generator` class-name config, loaded 
reflectively | shared contract test (strictly increasing / frozen / reserved 
ids) run against every generator; unknown class and class not implementing the 
interface both rejected; default generator carries no allocator state |
| T2.2 commit-time ordering check | `VersionIdAllocator`: refuse a commit whose 
id does not come after the key's current version; fall back to a 
versionedKeyTable lookup for records predating versioning | increasing id 
accepted; id at or below the current one rejected with `INVALID_REQUEST`; taken 
id on a pre-versioning record rejected with `KEY_ALREADY_EXISTS`; steady state 
performs no lookup (unit test asserts versionedKeyTable is never touched) |
| T2.3 pinned-first generator | `PinnedFirstVersionIdGenerator`: first-version 
detection (no current in keyTable) + `FIRST_VERSION_ID = 1` sentinel | first 
PUT gets the sentinel, later PUTs get transaction indexes; sentinel sorts 
before every transaction index; sentinel does not collide with the null slot; 
selectable by configuration |


> [Ozone versioning] VersionId generation strategy framework
> ----------------------------------------------------------
>
>                 Key: HDDS-15946
>                 URL: https://issues.apache.org/jira/browse/HDDS-15946
>             Project: Apache Ozone
>          Issue Type: Sub-task
>            Reporter: Janus Chow
>            Assignee: Janus Chow
>            Priority: Major
>
> This ticket includes the follows tasks:
> |*Sub-task*|*Scope*|*Acceptance*|
> |T2.1 interface + default generator|`VersionIdGenerator` interface; 
> `TransactionIndexVersionIdGenerator`; the 
> `ozone.om.versioning.version-id-generator` class-name config, loaded 
> reflectively|shared contract test (strictly increasing / frozen / reserved 
> ids) run against every generator; unknown class and class not implementing 
> the interface both rejected; default generator carries no allocator state|
> |T2.2 commit-time ordering check|`VersionIdAllocator`: refuse a commit whose 
> id does not come after the key's current version; fall back to a 
> versionedKeyTable lookup for records predating versioning|increasing id 
> accepted; id at or below the current one rejected with `INVALID_REQUEST`; 
> taken id on a pre-versioning record rejected with `KEY_ALREADY_EXISTS`; 
> steady state performs no lookup (unit test asserts versionedKeyTable is never 
> touched)|
> |T2.3 pinned-first generator|`PinnedFirstVersionIdGenerator`: first-version 
> detection (no current in keyTable) + `FIRST_VERSION_ID = 1` sentinel|first 
> PUT gets the sentinel, later PUTs get transaction indexes; sentinel sorts 
> before every transaction index; sentinel does not collide with the null slot; 
> selectable by configuration|



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to