Skip to content

Object server #2

Closed
Closed

Description

@ctengel

Possibly rewrite or replace altogether - our semantics are similar to S3 or WebDAV

Requirements

  • Support Range request for get (useful for Web browser video playback)
  • Don't load the whole file on GET or PUT (i.e. don't max out server memory)
  • List out contents
  • Disk free (so "locator" can query to see if there is enough space before redirecting a PUT here)
  • Status/Health (can be future, allows read only mode, etc)

Activity

  1. added a commit that references this issue on Aug 17, 2025
  2. added this to the Basic milestone on Aug 18, 2025
  3. ctengel commented on Aug 18, 2025

    @ctengel
    OwnerAuthor

    #8 included as well; especially checksum

  4. ctengel commented on Aug 19, 2025

    @ctengel
    OwnerAuthor

    time to beat 8-16 MB/s download

  5. ctengel commented on Aug 19, 2025

    @ctengel
    OwnerAuthor

    Loading whole file into memory looks like it may be a deal breaker for the pi hardware

  6. self-assigned this
    on Aug 19, 2025
  7. ctengel commented on Aug 19, 2025

    @ctengel
    OwnerAuthor

    Basically there are 3 choices:

    • Improve the super basic code we have
    • Switch to FastAPI or some other framework
    • Use a basic S3ish storage instead like gofakes3 or rclone or versitygw

    Spend a pom or two on each in order

  8. ctengel commented on Aug 19, 2025

    @ctengel
    OwnerAuthor

    Issue averted via f66b88e and fc4a37c

  9. ctengel commented on Aug 19, 2025

    @ctengel
    OwnerAuthor

    Currently about 16 MB/s or 128 Mbps replication - read+write - pretty good!!!

  10. ctengel commented on Aug 21, 2025

    @ctengel
    OwnerAuthor

    We may actually be essentially maxing out 100 Mbps Ethernet on Pi 3! So software performance is really good :-) need to build out Pi 4 object servers to get much better

  11. pinned this issue on Aug 21, 2025
  12. ctengel commented on Aug 25, 2025

    @ctengel
    OwnerAuthor

    down to as low as 3 Mbps - maybe related to SMR buffers filling up or parallel - regardless next step is to try pi 4

  13. ctengel commented on Sep 28, 2025

    @ctengel
    OwnerAuthor
    1. Move to pi 4
    2. Implement range request
  14. 2 remaining items

  15. ctengel commented on Jan 2, 2026

    @ctengel
    OwnerAuthor

    416

  16. ctengel commented on Jan 3, 2026

    @ctengel
    OwnerAuthor

    Looks like we may get this in Python 3.15: python/cpython#118949

    Or in the meantime: https://github.com/danvk/RangeHTTPServer

  17. ctengel commented on Jan 3, 2026

    @ctengel
    OwnerAuthor

    see also https://pkg.go.dev/net/http which currently implements range requests via FileServer, ServeFile ServeContent

  18. ctengel commented on Jan 3, 2026

    @ctengel
    OwnerAuthor

    which if any existing option makes it easy to handle puts and digests?

  19. ctengel commented on Jan 3, 2026

    @ctengel
    OwnerAuthor
    1. 3.15
    2. fastapi
    3. flask
    4. go
  20. ctengel commented on Jan 3, 2026

    @ctengel
    OwnerAuthor

    416 or 200 on multirange

  21. added a commit that references this issue on Jan 3, 2026
  22. ctengel commented on Jan 4, 2026

    @ctengel
    OwnerAuthor
    • regression
    • test range
    • perf comp
    • gradual deploy
  23. added a commit that references this issue on Jan 4, 2026
  24. ctengel commented on Jan 5, 2026

    @ctengel
    OwnerAuthor

    problem - pre checksumming we were getting ~230 Mbps / 27 MB/s upload but with it (either fastapi or python) but with it effectively 100 Mbps / 12 MB/s - sha256 on pi 4 is slow... back to pi 3 speeds...

  25. ctengel commented on Jan 5, 2026

    @ctengel
    OwnerAuthor

    Still quick enough for 1x 4k stream or 10x HD stream on a single node...

    I think just go with it and look to

  26. ctengel commented on Jan 5, 2026

    @ctengel
    OwnerAuthor

    server code is done, just need to scale and deploy

  27. unpinned this issue on Jan 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions