<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>emre şahin's digital garden 🍃 - xvc storage</title>
    <link>https://emresahin.net/tags/xvc-storage/</link>
    <description>Posts in the xvc storage tag</description>
    <language>en</language>
    <managingEditor>contact@emresahin.net (Emre Şahin)</managingEditor>
    <lastBuildDate>Tue, 15 Sep 2026 19:46:32 +0000</lastBuildDate>
    <atom:link href="https://emresahin.net/tags/xvc-storage/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>devlog 4</title>
      <published>2024-06-05T10:04:54+00:00</published>
      <updated>2024-06-05T10:04:54+00:00</updated>
      <author>Emre Şahin</author>
      <pubDate>Wed, 05 Jun 2024 10:04:54 +0000</pubDate>
      <link>https://emresahin.net/devlog-4/</link>
      <guid isPermaLink="true">https://emresahin.net/devlog-4/</guid>
      <description>Let’s start by looking at the debug output issue. We can start by replacing the eprintln! macros with println! , perhaps. I replaced the eprintln! s with println! , but it didn’t make any difference. Maybe we should remove those statements completely. I can’t really find the place that kills the ...</description>
      <category>devlog</category>
      <category>xvc</category>
      <category>xvc storage</category>
      <category>python</category>
      <category>clap</category>
      <category>debug</category>
      <category>rust</category>
      <category>s3</category>
      <category>cli</category>
      <content:encoded><![CDATA[<p>Let’s start by looking at the debug output issue. We can start by replacing the <code>eprintln!</code> macros with <code>println!</code>, perhaps.</p>
<p>I replaced the <code>eprintln!</code>s with <code>println!</code>, but it didn’t make any difference. Maybe we should remove those statements completely.</p>
<p>I can’t really find the place that kills the kernel. The last command to run is <code>xvc file list</code>:</p>
<pre><code class="language-python">print(xvc_test_data.file().list("test-data/dir-0002"))
</code></pre>
<p>and the output it produces is:</p>
<pre><code>[src/output.rs:144:13] &amp;output_str = "SS         131 2024-06-05 08:57:11 41e16be7          test-data/dir-0002/file-0003.bin\nSS         131 2024-06-05 08:57:11 27f0
efd0          test-data/dir-0002/file-0002.bin\nSS         131 2024-06-05 08:57:11 66de5084          test-data/dir-0002/file-0001.bin\nTotal #: 3 Workspace Size:
      393 Cached Size:        6006\n"
</code></pre>
<p><code>print</code> may be causing the crash, but the more likely cause is the command that comes after this:</p>
<pre><code>!ls -l test-data/dir-0001/
</code></pre>
<p>I replaced this with <code>lsd</code>, which also failed. Maybe it’s actually a Python crash or bug.</p>
<p>The way to understand is to create a notebook file with only that cell and try to run it.</p>
<p>The <code>ls</code> line runs fine with a new notebook. It even runs on the <code>README</code> file when run at the beginning. The line that makes the kernel crash is:</p>
<pre><code class="language-python">xvc_test_data.storage().new_s3(name="backup", bucket_name="xvc-test", region="eu-central-1", storage_prefix="xvc-storage")
</code></pre>
<p>We can start by removing the <code>new_s3</code> part.</p>
<p>The <code>storage()</code> method runs fine. It returns an <code>XvcStorage()</code> object, as it should.</p>
<p>When I run <code>storage().list()</code>, it takes a very long time. The bug is likely related to <code>storage()</code>.</p>
<p>It looks like the <code>storage</code> object was adding <code>file</code> instead of <code>storage</code> as a subcommand. I’ve fixed it now.</p>
<p>That was the bug. The <code>README</code> notebook now creates the S3 storage.</p>
<p>What was the reason behind this?</p>
<p>Parsing the CLI to the <code>XvcCLI</code> object was perhaps the culprit. Let’s look at it more clearly.</p>
<p>Let’s try <code>xvc file new s3</code> as a command to see how it behaves.</p>
<p>It says <em>unrecognized subcommand</em> for <code>new</code>.</p>
<p>This is how it should be, but I wonder why it doesn’t work for the <code>XvcCLI</code> parser.</p>
<p>Anyway, it’s already 13:00, so let’s stop here for today.</p>]]></content:encoded>
    </item>
    <item>
      <title>Xvc Devlog 221030</title>
      <published>2022-10-31T08:57:00+00:00</published>
      <updated>2022-10-31T08:57:00+00:00</updated>
      <author>Emre Şahin</author>
      <pubDate>Mon, 31 Oct 2022 08:57:00 +0000</pubDate>
      <link>https://emresahin.net/xvc-devlog-221030/</link>
      <guid isPermaLink="true">https://emresahin.net/xvc-devlog-221030/</guid>
      <description>🐇 We’ll start by checking the repository today. What are the most important issues? 🐢 I’ve merged PR#66 . Let’s list the outstanding issues now. 65 OPEN Add Mermaid Support to Netlify Installation 64 OPEN Fix `xvc-storage` compilation warnings bug 54 OPEN Fix all references to `xvc data` in the d...</description>
      <category>devlog</category>
      <category>Software Development</category>
      <category>github actions</category>
      <category>arc42</category>
      <category>debugging</category>
      <category>xvc storage</category>
      <category>tests</category>
      <category>s3cmd</category>
      <content:encoded><![CDATA[<p>🐇 We’ll start by checking <a href="https://github.com/iesahin/xvc">the repository</a> today. What are the most important issues?</p>
<p>🐢 I’ve merged <a href="https://github.com/iesahin/xvc/pull/66">PR#66</a>. Let’s list the outstanding issues now.</p>
<pre><code>65	OPEN	Add Mermaid Support to Netlify Installation
64	OPEN	Fix `xvc-storage` compilation warnings	bug
54	OPEN	Fix all references to `xvc data` in the documentation
51	OPEN	Add a benchmark script to compare Xvc with other tools
50	OPEN	Consider changing `xvc file push` to `xvc file send` and `xvc file pull` to `xvc file retrieve`
49	OPEN	Add `--generic-command` as a dependency type to `xvc pipeline dependency`
48	OPEN	Write rsync example for `xvc storage generic`	documentation
47	OPEN	Write rclone example for `xvc storage generic`	documentation
46	OPEN	Allow to skip init in remotes with `--skip-init` option
45	OPEN	Update `VStore::to_store` to use some internal mechanism to avoid `XvcStore::insert`
43	OPEN	Update to `clap 4.0`
42	OPEN	Clean up xvc crate dependencies
36	OPEN	Add version to released file binaries
33	OPEN	Update `arch/remotes.md` for new naming	documentation
32	OPEN	Remove arc42 sections from the documentation	documentation
29	OPEN	Add documentation for `xvc storage new gcs`	documentation
28	OPEN	`xvc storage new yandex`	enhancement
24	OPEN	Create a logo for Xvc	documentation
23	OPEN	Add a Github action to upload new versions to crates.io	automation
20	OPEN	ref: Add rsync example for `xvc storage new generic`
18	OPEN	Add a new workflow for remote tests	automation
12	OPEN	Create a website for Xvc
5	OPEN	Add storage tests to Github Actions	automation
4	OPEN	fix clippy warnings	bug
1	OPEN	`xvc storage new` for all S3 compatible cloud services supported by `rust-s3`
</code></pre>
<p>🐇 As far as I know, you removed the arc42 stubs from the docs yesterday. You can close issue #32.</p>
<p>🐢 I closed it via <code>gh issue close</code>.</p>
<p>🐇 You should add a comment to that.</p>
<p>🐢 Added the comment.</p>
<hr>
<p>🐇 It’s October 30th. Looking at the logs, you’ve <a href="https://github.com/iesahin/xvc/issues?q=is%3Aissue+is%3Aclosed">closed some more issues since we last talked.</a></p>
<p>🐢 I’ve been productive over the last few days. Now, let’s take a look at the <a href="https://github.com/iesahin/xvc/issues?q=is%3Aopen+is%3Aissue">open</a> issues.</p>
<p>🐇 I think you have a more pressing problem. <a href="https://github.com/iesahin/xvc/actions/runs/3352401264">Your tests</a> are failing. You need to fix them first before moving to another task.</p>
<p>🐢 Created a new <a href="https://github.com/iesahin/xvc/issues/81">issue</a>. The logs say:</p>
<pre><code>81Z error: 7 targets failed:
2022-10-29T18:18:36.8969467Z ##[error]    `-p xvc-workflow-tests --test test_storage_new_digital_ocean`
2022-10-29T18:18:36.8970697Z     `-p xvc-workflow-tests --test test_storage_new_gcp`
2022-10-29T18:18:36.8971279Z     `-p xvc-workflow-tests --test test_storage_new_generic_rsync`
2022-10-29T18:18:36.8971840Z     `-p xvc-workflow-tests --test test_storage_new_minio`
2022-10-29T18:18:36.8972387Z     `-p xvc-workflow-tests --test test_storage_new_r2`
2022-10-29T18:18:36.8973035Z     `-p xvc-workflow-tests --test test_storage_new_s3`
2022-10-29T18:18:36.8973577Z     `-p xvc-workflow-tests --test test_storage_new_wasabi`
2022-10-29T18:18:36.9368079Z ##[error]The process '/home/runner/.cargo/bin/cargo' failed with exit code 101
</code></pre>
<p>🐇 Looking at the logs, you should clean up those older branches.</p>
<p>🐢 Let’s do it now.</p>
<hr>
<p>🐢 Done. I’ve deleted all branches except <code>main</code>.</p>
<p>🐇 Good. I think the best way is to delete them as soon as you merge them.</p>
<p>🐢 I’ve activated that setting. These were older branches.</p>
<p>🐇 Cool. Now, will you be checking the failing tests?</p>
<p>🐢 I think remote tests should never run if there are other errors. We can run coverage and remote tests as a second step after the first succeed.</p>
<p>🐇 That seems like a neat idea. You want to split the current job into two: one for compiling and testing the non-remote parts, and the second for coverage and storage tests. It won’t waste CI minutes that way?</p>
<p>🐢 On second thought, I think at the moment, that’s not a pressing issue. We should start fixing these tests at once. We can split them later.</p>
<p>🐇 Ok. It looks from the logs like secrets are not being made available to your jobs.</p>
<pre><code>2022-10-29T18:18:17.5039311Z test test_storage_new_digital_ocean ... FAILED
2022-10-29T18:18:17.5039550Z
2022-10-29T18:18:17.5039652Z failures:
2022-10-29T18:18:17.5039784Z
2022-10-29T18:18:17.5040197Z ---- test_storage_new_digital_ocean stdout ----
2022-10-29T18:18:17.5040558Z Error: VarError { source: NotPresent }
2022-10-29T18:18:17.5040758Z
2022-10-29T18:18:17.5040765Z
</code></pre>
<p>🐢 I added them now. Let’s wait until the job ends to get a new set of logs.</p>
<p>🐇 You can write some documentation in the meantime.</p>
<p>🐢 I think <a href="https://github.com/iesahin/xvc/issues/82">#82</a> is a good candidate for this. There must not be too many missing docs in the ECS crate.</p>
<p>🐇 It was about <code>walker</code> and you fixed the <code>ecs</code>. You’re the most absentminded developer here, I believe.</p>
<p>🐢 Ooops, you’re right. I’ll add them together in a <a href="https://github.com/iesahin/xvc/pull/93">single PR.</a></p>
<p>🐇 In the meantime, the storage testing job has ended with 🔴.</p>
<p>🐢 Checking the raw logs. It looks like we didn’t update the tests to match the current options:</p>
<pre><code>2022-10-30T14:45:50.1058348Z error: Found argument '--storage-prefix' which wasn't expected, or isn't valid in this context
2022-10-30T14:45:50.1059809Z ##[error]Found argument '--storage-prefix' which wasn't expected, or isn't valid in this context
2022-10-30T14:45:50.1061740Z 	If you tried to supply `--storage-prefix` as a value rather than a flag, use `-- --storage-prefix`
2022-10-30T14:45:50.1063220Z
2022-10-30T14:45:50.1063394Z USAGE:
2022-10-30T14:45:50.1064302Z     xvc storage new digital-ocean --name &lt;NAME&gt; --bucket-name &lt;BUCKET_NAME&gt; --region &lt;REGION&gt;
</code></pre>
<p>🐇 Is it <code>--storage-prefix</code> or <code>--remote-prefix</code>? Which one is clearer?</p>
<p>🐢 I think updating the tests to conform to the current options is better for now. We can update the options later if desired.</p>
<p>🐇 Another failure is <code>rg</code>. You assume it exists on the testing system.</p>
<p>🐢 <code>ripgrep</code> is available in Ubuntu 20.04, so we can just update the initial package list.</p>
<p>🐇 The same <code>--storage-prefix</code> failure appears in the <code>minio</code> tests.</p>
<p>🐢 Ok. Fixing it.</p>
<p>🐇 S3 tests want to run the <code>new-s3</code> subcommand. I think we now see why we need these tests in the first place.</p>
<p>🐢 Yeah. Fixing the prefix option, too.</p>
<p>🐇 <code>s3cmd</code> is also required. You should add it, too.</p>
<p>🐢 Ok. I think we’ve added all missing dependencies. I’ll have to convert the <code>mc</code> tests for Minio to use <code>s3cmd</code>.</p>
<p>🐇 Then we can try again. Now, we can get back to documentation.</p>
<p>🐢 Added some more documentation to PR#93. I think it’s better to return to the storage test errors now.</p>
<p>🐇 It looks like you have missing DigitalOcean credentials.</p>
<p>🐢 Let’s take a look.</p>
<hr>
<p>🐢 I’ve updated the tests to use a config file instead of command-line arguments that would be visible in the logs.</p>
<p>🐇 Good practice. You also need to remove previous logs.</p>
<p>🐢 Maybe there is an option for that.</p>
<p>🐇 It looks like there isn’t. There are masking options; when we add them to secrets, they are masked. But you shouldn’t use them in calls anyway.</p>]]></content:encoded>
    </item>
  </channel>
</rss>
