apache / apache/opendal

Tracking issues of user metadata support

Open
#4,842 10 comments 1 reaction 0 assignees View on GitHub
good first issue help wanted
Dominant language
Rust
Stars
5.4k
Forks
825
Avg merge
1d 14m
Merged PRs (30d)
127

Description

This issue is used to track the implementation of user metadata support.

## Context

There are two types of metadata across various storage services.

- System Defined: metadata like `last-modified`, `content-type` and so on. Some of them are editable, like `content-type`, but some are non-editable like `last-modified`.
- User Defined: extra metadata that provided by user, can be any valid string.

OpenDAL now only supports `System Defined` metadata, we should add support for `User Defined` metadata so that users can write most useful information along with the file data. For example, write the `location` for this file.

## Tasks

- Implement `user_metadata` for metadata
- [x] Add `user_metadata: HashMap` in `Metadata`
- [x] Add `user_metadata` in metakey
- [x] Add `write_with_user_metadata` in capability
- [x] Add `user_metadata` integration tests
- Impelment `user_metadata` for services
- [x] s3: https://github.com/apache/opendal/pull/5030
- [x] azblob: https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-metadata
- [x] oss: https://github.com/apache/opendal/pull/4881
- [x] gcs: https://github.com/apache/opendal/pull/5276
- [x] cos: https://github.com/apache/opendal/pull/5510
- [x] obs: https://github.com/apache/opendal/pull/5405
- [x] swift: https://github.com/apache/opendal/pull/5601
- [ ] azdls
- [ ] azfile
- [ ] b2
- [ ] fs
- [ ] upyun
- [ ] webdav

Contributor guide

Open the contributing guide

Research direction

Start with the Metadata and capability changes and the existing user_metadata integration tests, then compare the completed service implementations listed in the issue. Check the remaining azdls, azfile, b2, fs, upyun, and webdav services; done means each supports user metadata and the integration tests pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.