From 76b724dd7bd254fb0c44d6eec735c9d3855641bc Mon Sep 17 00:00:00 2001 From: Matt M Date: Mon, 14 Apr 2025 17:22:04 -0700 Subject: [PATCH 1/6] Document SQLite design decisions --- .../design-descriptions/images/configDir.png | Bin 0 -> 33056 bytes .../images/sqlite_format.png | Bin 0 -> 80032 bytes .../design-descriptions/sql-database.md | 53 ++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 docs/source/docs/contributing/design-descriptions/images/configDir.png create mode 100644 docs/source/docs/contributing/design-descriptions/images/sqlite_format.png create mode 100644 docs/source/docs/contributing/design-descriptions/sql-database.md diff --git a/docs/source/docs/contributing/design-descriptions/images/configDir.png b/docs/source/docs/contributing/design-descriptions/images/configDir.png new file mode 100644 index 0000000000000000000000000000000000000000..491179420b9c2420b0e0a19d0b8038d093afa293 GIT binary patch literal 33056 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 literal 0 HcmV?d00001 diff --git a/docs/source/docs/contributing/design-descriptions/images/sqlite_format.png b/docs/source/docs/contributing/design-descriptions/images/sqlite_format.png new file mode 100644 index 0000000000000000000000000000000000000000..4da53e282ade811dcd6c3db8cffb52f5f8b6f46e GIT binary patch literal 80032 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

IkW7+u57aI;W4JPG{(g2(L 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 OLq$PDzFgKa=zjo2Ua + +This design was a carry-over from ChameleonVision, which had used a similar directory structure since config management was added in v2. These config files used to be stored on the FAT partition of your Raspberry Pi's SD card, but after reports of settings loss (the symptom usually just being a generic "my settings went poof" report), we moved the directory over to the root filesystem, which for our supported devices was NTFS. + +"NTFS is a journalizing filesystem", we said. "It'll be so much more robust". + +In summer YEAR????, I found a [Pi forum post](a;sldfja;sdflj) that seemed to indicate there was perhaps some funny business happening with file caching. The Pi OS at the time tried its best to avoid writing updates to the physical SD card (SD cards are not designed to run an OS off of. Don't get me started.), which means that if you don't force flush/sync, changes can be lost on power cycle as they're never written to the SD card. In response we added flushes and [FileDescriptor::syncs](https://docs.oracle.com/javase/8/docs/api/java/io/FileDescriptor.html#sync--) to the code, and called it good. + +And yet we kept getting reports of settings being lost. In particular, a Raspberry Pi base OS update that occurred during the summer of 2022 seemed to make this report more frequent. Reports tracked in GitHub included: +- 29 October, 2022: https://github.com/PhotonVision/photonvision/issues/552 +- User reports from CD (todo link) +- User reports from Discord (todo link) + +As of February 2023, we were making [every attempt available to us from Java](https://github.com/PhotonVision/photonvision/blob/f81304846251b82a128013ce0800a2cc1b71e744/photon-core/src/main/java/org/photonvision/common/util/file/JacksonUtils.java#L113C1-L118C34) to close, flush, and force a sync to the physical SD card for config files we serialized: + +```java + private static void saveJsonString(String json, Path path, boolean forceSync) throws IOException { + var file = path.toFile(); + // snip for brevity + FileOutputStream fileOutputStream = new FileOutputStream(file); + fileOutputStream.write(json.getBytes()); + fileOutputStream.flush(); + if (forceSync) { + FileDescriptor fileDescriptor = fileOutputStream.getFD(); + fileDescriptor.sync(); + } + fileOutputStream.close(); + } +``` + +So in summary: +- Every time we saved to disk, we had to delete a directory recursively, then re-create its contents. We do this whenever settings are changed, as well as [immediately on startup](https://github.com/PhotonVision/photonvision/blob/f81304846251b82a128013ce0800a2cc1b71e744/photon-server/src/main/java/org/photonvision/Main.java#L348). Hopefully you don't turn off your robot at the wrong time. +- Even on the Pi's NTFS filesystem, even syncing the world on every write, we were still getting reports of settings being lost + - In retrospect, some of these could be attributed to poor multi-camera matching code behavior (TODO link this GH issue), which was [updated in Summer 2024](camera-matching.md) + +## What to do? + +At the time we figured our options boiled down to "stop saving configs as multiple files". + +Databases like SQLite are also designed to be robust utilizing [atomic database commits](https://sqlite.org/atomiccommit.html). +- We threw together a [SQLite proof-of-concept](https://github.com/PhotonVision/photonvision/pull/822/files) +- We also made an attempt at putting the same database into a ZIP file and [just atomically renaming it](https://github.com/PhotonVision/photonvision/pull/822/files) to replace the old config ZIP, using Java `File.move`'s [ATOMIC_MOVE](https://docs.oracle.com/javase/8/docs/api/java/nio/file/StandardCopyOption.html#ATOMIC_MOVE) + +Both were tested, and we decided to go with SQLite. It was a rather spicy mid-season merge, but we felt that losing config data was already a game-over scenario, so anything was better than nothing. + +The SQL config change landed [in !818 in March 2023](https://github.com/PhotonVision/photonvision/pull/818). With it, we just shove the exact same set of config files into a SQLite database instead of a + + + From f55ecfe98d3c8c3022050f26e7c0ec6711ce9765 Mon Sep 17 00:00:00 2001 From: Matt M Date: Mon, 14 Apr 2025 17:35:18 -0700 Subject: [PATCH 2/6] a --- .../source/docs/contributing/design-descriptions/sql-database.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/source/docs/contributing/design-descriptions/sql-database.md b/docs/source/docs/contributing/design-descriptions/sql-database.md index 677760df0b..d797f5aba3 100644 --- a/docs/source/docs/contributing/design-descriptions/sql-database.md +++ b/docs/source/docs/contributing/design-descriptions/sql-database.md @@ -11,6 +11,7 @@ This design was a carry-over from ChameleonVision, which had used a similar dire In summer YEAR????, I found a [Pi forum post](a;sldfja;sdflj) that seemed to indicate there was perhaps some funny business happening with file caching. The Pi OS at the time tried its best to avoid writing updates to the physical SD card (SD cards are not designed to run an OS off of. Don't get me started.), which means that if you don't force flush/sync, changes can be lost on power cycle as they're never written to the SD card. In response we added flushes and [FileDescriptor::syncs](https://docs.oracle.com/javase/8/docs/api/java/io/FileDescriptor.html#sync--) to the code, and called it good. And yet we kept getting reports of settings being lost. In particular, a Raspberry Pi base OS update that occurred during the summer of 2022 seemed to make this report more frequent. Reports tracked in GitHub included: +- 22 Febuary 2022: https://www.chiefdelphi.com/t/photon-vision-lost-config-file/403692 -- "After looking at the logs, I found that half of the config files were gone. It lost the configs for the pipelines and one camera." - 29 October, 2022: https://github.com/PhotonVision/photonvision/issues/552 - User reports from CD (todo link) - User reports from Discord (todo link) From 4a524ed8ad6d4e65b0135b1c4033b585013c2166 Mon Sep 17 00:00:00 2001 From: Matt M Date: Mon, 14 Apr 2025 17:45:13 -0700 Subject: [PATCH 3/6] Add more links --- .../design-descriptions/sql-database.md | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/docs/source/docs/contributing/design-descriptions/sql-database.md b/docs/source/docs/contributing/design-descriptions/sql-database.md index d797f5aba3..d3e382fb34 100644 --- a/docs/source/docs/contributing/design-descriptions/sql-database.md +++ b/docs/source/docs/contributing/design-descriptions/sql-database.md @@ -10,14 +10,16 @@ This design was a carry-over from ChameleonVision, which had used a similar dire In summer YEAR????, I found a [Pi forum post](a;sldfja;sdflj) that seemed to indicate there was perhaps some funny business happening with file caching. The Pi OS at the time tried its best to avoid writing updates to the physical SD card (SD cards are not designed to run an OS off of. Don't get me started.), which means that if you don't force flush/sync, changes can be lost on power cycle as they're never written to the SD card. In response we added flushes and [FileDescriptor::syncs](https://docs.oracle.com/javase/8/docs/api/java/io/FileDescriptor.html#sync--) to the code, and called it good. -And yet we kept getting reports of settings being lost. In particular, a Raspberry Pi base OS update that occurred during the summer of 2022 seemed to make this report more frequent. Reports tracked in GitHub included: -- 22 Febuary 2022: https://www.chiefdelphi.com/t/photon-vision-lost-config-file/403692 -- "After looking at the logs, I found that half of the config files were gone. It lost the configs for the pipelines and one camera." -- 29 October, 2022: https://github.com/PhotonVision/photonvision/issues/552 -- User reports from CD (todo link) -- User reports from Discord (todo link) +So in summary: +- Every time we saved to disk, we had to delete a directory recursively, then re-create its contents. We do this whenever settings are changed, as well as [immediately on startup](https://github.com/PhotonVision/photonvision/blob/f81304846251b82a128013ce0800a2cc1b71e744/photon-server/src/main/java/org/photonvision/Main.java#L348). Hopefully you don't turn off your robot at the wrong time. +- Even on the Pi's NTFS filesystem, even syncing the world on every write, we were still getting reports of settings being lost + - In retrospect, some of these could be attributed to poor multi-camera matching code behavior (TODO link this GH issue), which was [updated in Summer 2024](camera-matching.md) -As of February 2023, we were making [every attempt available to us from Java](https://github.com/PhotonVision/photonvision/blob/f81304846251b82a128013ce0800a2cc1b71e744/photon-core/src/main/java/org/photonvision/common/util/file/JacksonUtils.java#L113C1-L118C34) to close, flush, and force a sync to the physical SD card for config files we serialized: +## Timeline +And yet we kept getting reports of settings being lost. In particular, a Raspberry Pi base OS update that occurred during the summer of 2022 seemed to make this report more frequent. For a rough timeline of events: + +- Since [at least 26 March 2020](https://github.com/PhotonVision/photonvision/blame/b236d20fd6216ee3d5ef3b9e8511db8f27567262/chameleon-server/src/main/java/com/chameleonvision/common/util/file/JacksonUtils.java), we were making [every attempt available to us from Java](https://github.com/PhotonVision/photonvision/blob/f81304846251b82a128013ce0800a2cc1b71e744/photon-core/src/main/java/org/photonvision/common/util/file/JacksonUtils.java#L113C1-L118C34) to close, flush, and force a sync to the physical SD card for config files we serialized: ```java private static void saveJsonString(String json, Path path, boolean forceSync) throws IOException { var file = path.toFile(); @@ -32,11 +34,13 @@ As of February 2023, we were making [every attempt available to us from Java](ht fileOutputStream.close(); } ``` - -So in summary: -- Every time we saved to disk, we had to delete a directory recursively, then re-create its contents. We do this whenever settings are changed, as well as [immediately on startup](https://github.com/PhotonVision/photonvision/blob/f81304846251b82a128013ce0800a2cc1b71e744/photon-server/src/main/java/org/photonvision/Main.java#L348). Hopefully you don't turn off your robot at the wrong time. -- Even on the Pi's NTFS filesystem, even syncing the world on every write, we were still getting reports of settings being lost - - In retrospect, some of these could be attributed to poor multi-camera matching code behavior (TODO link this GH issue), which was [updated in Summer 2024](camera-matching.md) +- 22 Febuary 2022: https://www.chiefdelphi.com/t/photon-vision-lost-config-file/403692 -- "After looking at the logs, I found that half of the config files were gone. It lost the configs for the pipelines and one camera." +- 29 October, 2022: https://github.com/PhotonVision/photonvision/issues/552 +- 3 March 2023 -- @mdurrani834 [creates "PSA for PhotonVision Teams (Settings Loss Bug)""](https://www.chiefdelphi.com/t/psa-for-photonvision-teams-settings-loss-bug/428823) + - Matt: "The failure mode shows up as Photon being unable to parse a specific camera’s config JSON file (not malformed, just straight up missing based on logs)" +- 13 April 2023: https://www.chiefdelphi.com/t/photon-vision-resets-configuration-to-default/434259 -- "" +- 17 June 2023: [SQLite pull request merged](https://github.com/PhotonVision/photonvision/pull/818). All further config loss reports were root-caused to camera-matching bugs. +- TODO: more Discord and CD link archeology ## What to do? @@ -46,9 +50,7 @@ Databases like SQLite are also designed to be robust utilizing [atomic database - We threw together a [SQLite proof-of-concept](https://github.com/PhotonVision/photonvision/pull/822/files) - We also made an attempt at putting the same database into a ZIP file and [just atomically renaming it](https://github.com/PhotonVision/photonvision/pull/822/files) to replace the old config ZIP, using Java `File.move`'s [ATOMIC_MOVE](https://docs.oracle.com/javase/8/docs/api/java/nio/file/StandardCopyOption.html#ATOMIC_MOVE) -Both were tested, and we decided to go with SQLite. It was a rather spicy mid-season merge, but we felt that losing config data was already a game-over scenario, so anything was better than nothing. - -The SQL config change landed [in !818 in March 2023](https://github.com/PhotonVision/photonvision/pull/818). With it, we just shove the exact same set of config files into a SQLite database instead of a +Both were tested, and post-champs, we decided to go with SQLite. The SQL config change landed [in !818 in June 2023](https://github.com/PhotonVision/photonvision/pull/818). With it, we just shove the exact same set of config files into a SQLite database instead of a From 63a90dc4b31b3063ee8bec4d702020b1afec24b5 Mon Sep 17 00:00:00 2001 From: Matt M Date: Mon, 14 Apr 2025 17:49:08 -0700 Subject: [PATCH 4/6] fix link --- .../docs/contributing/design-descriptions/sql-database.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/docs/contributing/design-descriptions/sql-database.md b/docs/source/docs/contributing/design-descriptions/sql-database.md index d3e382fb34..16294cd743 100644 --- a/docs/source/docs/contributing/design-descriptions/sql-database.md +++ b/docs/source/docs/contributing/design-descriptions/sql-database.md @@ -8,7 +8,7 @@ This design was a carry-over from ChameleonVision, which had used a similar dire "NTFS is a journalizing filesystem", we said. "It'll be so much more robust". -In summer YEAR????, I found a [Pi forum post](a;sldfja;sdflj) that seemed to indicate there was perhaps some funny business happening with file caching. The Pi OS at the time tried its best to avoid writing updates to the physical SD card (SD cards are not designed to run an OS off of. Don't get me started.), which means that if you don't force flush/sync, changes can be lost on power cycle as they're never written to the SD card. In response we added flushes and [FileDescriptor::syncs](https://docs.oracle.com/javase/8/docs/api/java/io/FileDescriptor.html#sync--) to the code, and called it good. +In summer YEAR????, I found a Pi forum post that seemed to indicate there was perhaps some funny business happening with file caching. The Pi OS at the time tried its best to avoid writing updates to the physical SD card (SD cards are not designed to run an OS off of. Don't get me started.), which means that if you don't force flush/sync, changes can be lost on power cycle as they're never written to the SD card. In response we added flushes and [FileDescriptor::syncs](https://docs.oracle.com/javase/8/docs/api/java/io/FileDescriptor.html#sync--) to the code, and called it good. So in summary: - Every time we saved to disk, we had to delete a directory recursively, then re-create its contents. We do this whenever settings are changed, as well as [immediately on startup](https://github.com/PhotonVision/photonvision/blob/f81304846251b82a128013ce0800a2cc1b71e744/photon-server/src/main/java/org/photonvision/Main.java#L348). Hopefully you don't turn off your robot at the wrong time. From 98d0e9de9b9eb84de990f26fef8528d36803a49e Mon Sep 17 00:00:00 2001 From: Matt M Date: Mon, 14 Apr 2025 17:57:33 -0700 Subject: [PATCH 5/6] More links! --- .../contributing/design-descriptions/sql-database.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/source/docs/contributing/design-descriptions/sql-database.md b/docs/source/docs/contributing/design-descriptions/sql-database.md index 16294cd743..3cf47ec03b 100644 --- a/docs/source/docs/contributing/design-descriptions/sql-database.md +++ b/docs/source/docs/contributing/design-descriptions/sql-database.md @@ -4,15 +4,15 @@ Once upon a time, PhotonVision saved settings in a directory full of nested JSON -This design was a carry-over from ChameleonVision, which had used a similar directory structure since config management was added in v2. These config files used to be stored on the FAT partition of your Raspberry Pi's SD card, but after reports of settings loss (the symptom usually just being a generic "my settings went poof" report), we moved the directory over to the root filesystem, which for our supported devices was NTFS. +This design was a carry-over from ChameleonVision, which had used a similar directory structure since config management was added in v2. These config files used to be stored on the FAT partition of your Raspberry Pi's SD card, but after reports of settings loss (the symptom usually just being a generic "my settings went poof" report), we moved the directory over to the root filesystem, which for our supported devices was EXT4. (I think). -"NTFS is a journalizing filesystem", we said. "It'll be so much more robust". +"EXT4 is a journalizing filesystem", we said. "It'll be so much more robust". In summer YEAR????, I found a Pi forum post that seemed to indicate there was perhaps some funny business happening with file caching. The Pi OS at the time tried its best to avoid writing updates to the physical SD card (SD cards are not designed to run an OS off of. Don't get me started.), which means that if you don't force flush/sync, changes can be lost on power cycle as they're never written to the SD card. In response we added flushes and [FileDescriptor::syncs](https://docs.oracle.com/javase/8/docs/api/java/io/FileDescriptor.html#sync--) to the code, and called it good. So in summary: - Every time we saved to disk, we had to delete a directory recursively, then re-create its contents. We do this whenever settings are changed, as well as [immediately on startup](https://github.com/PhotonVision/photonvision/blob/f81304846251b82a128013ce0800a2cc1b71e744/photon-server/src/main/java/org/photonvision/Main.java#L348). Hopefully you don't turn off your robot at the wrong time. -- Even on the Pi's NTFS filesystem, even syncing the world on every write, we were still getting reports of settings being lost +- On the Pi's filesystem, even syncing the world on every write, we were still getting reports of settings being lost - In retrospect, some of these could be attributed to poor multi-camera matching code behavior (TODO link this GH issue), which was [updated in Summer 2024](camera-matching.md) ## Timeline @@ -34,8 +34,10 @@ And yet we kept getting reports of settings being lost. In particular, a Raspber fileOutputStream.close(); } ``` -- 22 Febuary 2022: https://www.chiefdelphi.com/t/photon-vision-lost-config-file/403692 -- "After looking at the logs, I found that half of the config files were gone. It lost the configs for the pipelines and one camera." -- 29 October, 2022: https://github.com/PhotonVision/photonvision/issues/552 +- 22 February 2022: https://www.chiefdelphi.com/t/photon-vision-lost-config-file/403692 -- "After looking at the logs, I found that half of the config files were gone. It lost the configs for the pipelines and one camera." +- 28 February 2022: We discovered [RoboRIO finder made PhotonVision hang only when connected to FMS](https://www.chiefdelphi.com/t/photonvision-2022-official-release/400536/29?u=thatmattguy), so Matt moved [config saving to a dedicated thread](https://github.com/PhotonVision/photonvision/pull/438/files) to ""Fix"" this. The long-term fix was to disable RoboRIO finder. +- 10 January 2023: https://www.chiefdelphi.com/t/co-processor-for-upcoming-season-for-vision/415153/234?u=thatmattguy -- "While the situation may be better with journaling filesystems, it does appear there is a real hardware issue that has a (low) risk of corrupting things beyond what journaling can handle." +- 29 October 2022: https://github.com/PhotonVision/photonvision/issues/552 - 3 March 2023 -- @mdurrani834 [creates "PSA for PhotonVision Teams (Settings Loss Bug)""](https://www.chiefdelphi.com/t/psa-for-photonvision-teams-settings-loss-bug/428823) - Matt: "The failure mode shows up as Photon being unable to parse a specific camera’s config JSON file (not malformed, just straight up missing based on logs)" - 13 April 2023: https://www.chiefdelphi.com/t/photon-vision-resets-configuration-to-default/434259 -- "" From 2082c208a75770419cead8f66988abb7d8c1e616 Mon Sep 17 00:00:00 2001 From: Matt M Date: Mon, 14 Apr 2025 17:59:54 -0700 Subject: [PATCH 6/6] add to toc --- docs/source/docs/contributing/design-descriptions/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/source/docs/contributing/design-descriptions/index.md b/docs/source/docs/contributing/design-descriptions/index.md index b6e706271a..a9aec91bb3 100644 --- a/docs/source/docs/contributing/design-descriptions/index.md +++ b/docs/source/docs/contributing/design-descriptions/index.md @@ -6,4 +6,5 @@ image-rotation time-sync camera-matching e2e-latency +sql-database ```