Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 1 addition & 18 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ on:
push:
branches:
- main
tags:
- "v*.*.*"
pull_request:
name: CI
jobs:
Expand All @@ -15,7 +13,7 @@ jobs:
- uses: cashapp/activate-hermit@v1
- run: |
just fmt
git diff
git diff --exit-code
test:
name: Test
runs-on: ubuntu-latest
Expand All @@ -27,22 +25,7 @@ jobs:
lint:
name: Lint
runs-on: ubuntu-latest
env:
GOPROXY: direct
steps:
- uses: actions/checkout@v4
- uses: cashapp/activate-hermit@v1
- run: just lint
release:
if: startsWith(github.ref, 'refs/tags/v')
needs: ["test", "lint"]
name: Release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: cashapp/activate-hermit@v1
- run: goreleaser release --fail-fast
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
21 changes: 21 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
on:
workflow_run:
workflows: ["CI"]
types:
- completed
branches:
- main
name: Release
jobs:
release:
if: github.event.workflow_run.conclusion == 'success' && startsWith(github.event.workflow_run.head_branch, 'refs/tags/v')
name: Release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: cashapp/activate-hermit@v1
- run: goreleaser release --fail-fast
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
19 changes: 5 additions & 14 deletions internal/cache/disk.go
Original file line number Diff line number Diff line change
Expand Up @@ -363,26 +363,17 @@ func (w *diskWriter) Write(p []byte) (int, error) {
}

func (w *diskWriter) Close() error {
if err := w.file.Close(); err != nil {
return errors.Errorf("failed to close temp file: %w", err)
}

f, err := w.disk.root.Open(w.tempPath)
if err != nil {
return errors.Errorf("failed to open temp file for setting xattr: %w", err)
}

expiresAtBytes, err := w.expiresAt.MarshalBinary()
if err != nil {
return errors.Join(errors.Errorf("failed to marshal expiration time: %w", err), f.Close())
return errors.Join(errors.Errorf("failed to marshal expiration time: %w", err), w.file.Close())
}

if err := xattr.FSet(f, expiresAtXAttr, expiresAtBytes); err != nil {
return errors.Join(errors.Errorf("failed to set expiration time: %w", err), f.Close())
if err := xattr.FSet(w.file, expiresAtXAttr, expiresAtBytes); err != nil {
return errors.Join(errors.Errorf("failed to set expiration time: %w", err), w.file.Close())
}

if err := f.Close(); err != nil {
return errors.Errorf("failed to close temp file after setting xattr: %w", err)
if err := w.file.Close(); err != nil {
return errors.Errorf("failed to close file: %w", err)
}

if err := w.disk.root.Rename(w.tempPath, w.path); err != nil {
Expand Down
6 changes: 4 additions & 2 deletions internal/cache/disk_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func TestDiskStorageExpiry(t *testing.T) {
disk, err := cache.NewDisk(ctx, cache.DiskConfig{Root: dir})
assert.NoError(t, err)

assert.Equal(t, int64(0), disk.Size(), "initial size should be 0")
assert.Equal(t, int64(0), disk.Size())

w1, err := disk.Create(ctx, "/first", time.Second*3)
assert.NoError(t, err)
Expand All @@ -35,7 +35,7 @@ func TestDiskStorageExpiry(t *testing.T) {
assert.NoError(t, w2.Close())

expectedSize := int64(len("first file data") + len("second file data"))
assert.Equal(t, expectedSize, disk.Size(), "size should match written data")
assert.Equal(t, expectedSize, disk.Size())

time.Sleep(time.Second * 2)

Expand All @@ -45,6 +45,8 @@ func TestDiskStorageExpiry(t *testing.T) {

_, err = disk.Open(ctx, "/second")
assert.IsError(t, err, os.ErrNotExist)

assert.Equal(t, int64(len("first file data")), disk.Size())
}

func TestDiskAsyncEviction(t *testing.T) {
Expand Down