Skip to content

Conversation

@leighmcculloch
Copy link
Member

@leighmcculloch leighmcculloch commented Jan 6, 2026

What

Add a new FilesystemDataStore implementation that satisfies the DataStore interface. Store data on the local filesystem with configurable destination_path and optional metadata sidecar files (.metadata.json). Support all DataStore operations: Exists, Size, GetFile, PutFile, PutFileIfNotExists, GetFileMetadata, GetFileLastModified, ListFilePaths, and Close.

Why

Enable quickstart to publish a meta lake locally without requiring cloud storage configuration (GCS/S3) to support integration testing with galexie with quickstart.

Related:

Close #5891
Close stellar/stellar-galexie#10
Close stellar/quickstart#835

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a new FilesystemDataStore implementation that enables storing DataStore data on the local filesystem, allowing quickstart to publish a meta lake locally without requiring cloud storage (GCS/S3). This unblocks galexie meta lake support in quickstart and integration testing scenarios.

Key Changes

  • Implements all DataStore interface methods (Exists, Size, GetFile, PutFile, PutFileIfNotExists, GetFileMetadata, GetFileLastModified, ListFilePaths, Close) for filesystem-based storage
  • Supports optional metadata sidecar files (.metadata.json) with configurable write_metadata flag
  • Integrates FilesystemDataStore into the DataStore factory pattern

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 11 comments.

File Description
support/datastore/filesystem.go Core implementation of FilesystemDataStore with file I/O operations, metadata handling, and directory traversal for listing files
support/datastore/filesystem_test.go Comprehensive test suite covering all DataStore operations, metadata handling, edge cases, and configuration options
support/datastore/datastore.go Registers "Filesystem" type in the DataStore factory function

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@leighmcculloch leighmcculloch changed the title Add Filesystem DataStore for local storage Add Filesystem datastore support Jan 6, 2026
@leighmcculloch leighmcculloch marked this pull request as ready for review January 6, 2026 22:19
Copy link
Contributor

@sreuland sreuland left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, great docs and test coverage also!

@leighmcculloch leighmcculloch merged commit 08ad73d into main Jan 8, 2026
20 of 27 checks passed
@leighmcculloch leighmcculloch deleted the datastore-filesystem branch January 8, 2026 04:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Filesystem DataStore implementation for local storage Add galexie meta lake ingest: add Datastore implementation for a local file system

4 participants