<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-dirmgr/src/storage, branch arti-v1.2.7</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.2.7</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.2.7'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2024-07-31T08:59:43Z</updated>
<entry>
<title>Merge branch 'sqlite-race' into 'main'</title>
<updated>2024-07-31T08:59:43Z</updated>
<author>
<name>gabi-250</name>
<email>gabi@torproject.org</email>
</author>
<published>2024-07-31T08:59:43Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=041ef9b3068d281bbcdd32f65b57215f835dbb42'/>
<id>urn:sha1:041ef9b3068d281bbcdd32f65b57215f835dbb42</id>
<content type='text'>
tor-dirmgr: Return an error if storage is readonly and DB is missing/incompatbile.

Closes #1497

See merge request tpo/core/arti!2283</content>
</entry>
<entry>
<title>tor-dirmgr: Use Path::try_exists() instead of Path::exists().</title>
<updated>2024-07-30T14:20:38Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2024-07-30T14:17:24Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=e2b7ac36df973ef97b3740e51acd9cd1da80a357'/>
<id>urn:sha1:e2b7ac36df973ef97b3740e51acd9cd1da80a357</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-dirmgr: Replace from_conn impl with a call to from_conn_internal helper.</title>
<updated>2024-07-30T10:00:48Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2024-07-29T15:42:23Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=89331d0862f347427507360c2f7e1a23b1dd8f32'/>
<id>urn:sha1:89331d0862f347427507360c2f7e1a23b1dd8f32</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-dirmgr: Return an error if storage is readonly and DB is missing/incompatbile.</title>
<updated>2024-07-30T10:00:48Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2024-07-23T15:16:21Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d7b92bd91d117deb6be85f82bfadd1bbae463a2c'/>
<id>urn:sha1:d7b92bd91d117deb6be85f82bfadd1bbae463a2c</id>
<content type='text'>
This fixes a bug in `SqliteStore`'s constructor: previously, it would
unconditionally try to create the missing database, even if it didn't
have write access. As a result, it was impossible to reliably start
multiple concurrent arti processes configured with the same (empty or
nonexistent) cache_dir, because many of them would fail with errors such
as
```
attempt to write a readonly database: Error code 8: Attempt to write a readonly database
```

Returning a `LocalResourceAlreadyInUse` error kind here enables us to
leverage the retry loop from `TorClientBuilder::create_unbootstrapped`
(which retries on local resource errors if `local_resource_timeout` is
set).

Closes #1497
</content>
</entry>
<entry>
<title>tor-dirmgr: Add some duplicate dead code allows</title>
<updated>2024-07-08T10:36:25Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2024-07-08T10:22:49Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=168cfc2c6e42182a703e51ea61b50dc82a2dfbe4'/>
<id>urn:sha1:168cfc2c6e42182a703e51ea61b50dc82a2dfbe4</id>
<content type='text'>
Sadly, rustc seems to want us to mark this allow in several places.
</content>
</entry>
<entry>
<title>sqlite: (style) Use consistent casing on "ExtDocs"</title>
<updated>2024-06-18T13:48:49Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-06-18T13:48:49Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=83430d6b2da2cfc3d4dc6ea4c621c07d1f80357e'/>
<id>urn:sha1:83430d6b2da2cfc3d4dc6ea4c621c07d1f80357e</id>
<content type='text'>
SQL is case-insensitive, but it is still nice to be consistent.
</content>
</entry>
<entry>
<title>storage: Remove orphaned files from dir_blobs</title>
<updated>2024-06-12T15:26:12Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-06-12T15:26:12Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=8a7e0b6225a1a70803457f4cd13bda0c4b47f024'/>
<id>urn:sha1:8a7e0b6225a1a70803457f4cd13bda0c4b47f024</id>
<content type='text'>
This patch removes files from dir_blobs if they are not referenced
from the database, or if their filenames are not valid UTF-8.
(If they were not valid UTF-8, we wouldn't have put them in our
database.)

To ensure that there can't be any race conditions, we only do this
when the file is a bit old.
</content>
</entry>
<entry>
<title>dirmgr: create temporary testing stores with correct paths.</title>
<updated>2024-06-12T15:12:01Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-06-12T15:12:01Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=06f9af078639d650df6c9b7add640b95cf772368'/>
<id>urn:sha1:06f9af078639d650df6c9b7add640b95cf772368</id>
<content type='text'>
Previously, we were putting an (optional) db.sql file and our blobs
into the same path, which is not what we do outside of our tests.
</content>
</entry>
<entry>
<title>dirmgr::storage: Enable foreign keys on our sqlite connections.</title>
<updated>2024-06-12T14:19:36Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-06-12T14:19:36Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=16f8757cc5173788563931c575b507a009ed0f28'/>
<id>urn:sha1:16f8757cc5173788563931c575b507a009ed0f28</id>
<content type='text'>
Without this, "ON DELETE CASCADE" will do nothing.

Part of fixing #1466.
</content>
</entry>
<entry>
<title>dirmgr::storage: Treat a missing blob file as an absent object.</title>
<updated>2024-06-12T14:18:20Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-06-12T13:51:17Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=8801c121ad79a7a59058aef69eff70c9537df1ee'/>
<id>urn:sha1:8801c121ad79a7a59058aef69eff70c9537df1ee</id>
<content type='text'>
Previously it was counted as a hard error, which would cause an
absolute failure to start if a blob file had been deleted improperly
-- for example, by a renegade cache-cleaner that had decided to
remove the largest files it could find.

Upon encountering a missing blob, we remove it from the database as
well: if we did not, then unavailable consensuses could still cause
us to try to fetch consensus diffs, because their rows would still
be present.

Fixes #1466.
</content>
</entry>
</feed>
