Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Unified annotation versioning #7917

Draft
wants to merge 39 commits into
base: master
Choose a base branch
from
Draft

Conversation

fm3
Copy link
Member

@fm3 fm3 commented Jul 8, 2024

URL of deployed dev instance (used for testing):

  • https://___.webknossos.xyz

Steps to test:

  • abc

TODOs:

  • Mechanism to Revert Editable Mappings
    • Iterators for SegmentToAgglomerate, AgglomerateToGraph
    • How to encode Reverted chunks, agglomerates? → Single Zero-Byte?
      • Check a single zero byte is not a valid proto message
    • Iterate over current version, fetch old version, rewrite
    • Integrate this in Updater or flush Updater before this happens
    • Test
    • Cleanup: Generic Reversion-Aware Iterator? Build on top of VersionedFossilDbIterator?
    • Save perf by skipping fetching content when only version is needed in iterator (different from volume, because here we don’t need to update the segment index)
      • that might need new fossildb api (ListKeysWithVersions)
    • Make the iterator async?
  • Annotation proto object
  • Annotation-wide update actions
    • add layer
    • delete layer
    • update layer metadata
    • update annotation metadata (name+description)
    • should “duplicate” also copy update actions? This is currently the case only for editable mappings. Needed for its merge function
  • Update Actions as Proto?
    • How to apply?
  • Unified versioning over layers
    • Route
    • Store Updates
    • Create Annotation
    • Updates need Layer Identifier
    • Apply Updates
      • updates that mutate annotation object
      • updates that mutate tracing objects
      • updates that mutate other stuff
        • volume buckets
        • proofreading
      • Special updates
        • AddSegmentIndex
        • ImportVolumedata
        • makeMappingEditable
        • Merge?
        • RevertToVersion
    • Version assertions
    • lazy apply for volumes and editable mappings?
      • can volume data still be written directly? can there be conflicts?
      • or ditch lazy apply completely? (might be ok with distributed skeletons etc)
      • When to materialize which layer?
        • store materialized layer only sometimes? count its update actions?
  • Search for // TODO
  • Renamings
    • Annotation to AnnotationInfo, AnnotationLayer to AnnotationLayerInfo
    • Tracing to AnnotationLayer
  • Frontend
    • Linearized update actions
    • Use new update action route
    • update actions now need actionTracingId
    • updateTracing was renamed → updateVolumeTracing/updateSkeletonTracing
    • Version Restore View
    • Send latest description + name with update, next to segment/tree stats?
    • enforce revert actions to come in separate update requests
    • same for add layer / delete layer / initialize editable mapping
  • Migration
    • Linearized Updates
    • changed update actions
      • updateTracing was renamed → updateVolumeTracing/updateSkeletonTracing
      • update actions now need actionTracingId
    • Find annotation ids
    • Can we run a first part in the background?
    • editable mapping update actions used to be stored by mappingName, now annotationId

Issues:


(Please delete unneeded items, merge only when none are left open)

@fm3 fm3 self-assigned this Jul 8, 2024
@fm3 fm3 changed the title Unified annotation versioning WIP: Unified annotation versioning Jul 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Unified Annotation Versioning
1 participant