Skip to main content

2021-23 Weekly Report

· 4 min read

Hello everyone, here is the weekly report for BeyondStorage, range from 2021-06-07 to 2021-06-11.

Application#

New UI Design#

This week we have finalised the new UI design, including the main colours and page styles.

Thanks for our designer, check the draft and feel free to express your idea or advice.

Library#

Go-storage v4.1.0 Released#

The new version v4.1.0 of go-storage was released at 2021-06-08, in which we:

Added:    cmd/definitions: Implement GSP-87 Feature Gates (#586)    cmd/definitions: Implement GSP-93 Add ObjectMode Pair (#592)Fixed:    cmd/definitions: Fix storage features not generated (#588)

For more, we introduced our project to developers at this Wednesday, here is the slides.

Add ObjectMode Pair#

We have introduced ObjectMode in GSP-25: Object Mode:

type ObjectMode uint32
const (    ModeIrregular ObjectMode = 0    ModeDir ObjectMode = 1 << iota    ModeRead    ModeLink)

But it's not enough, we need ObjectMode pair too. For example, the Create operation needs ObjectMode to create a new object. And ObjectMode COULD be used as input restriction for operations.

For example: In services like s3 which doesn't have native CreateDir support, we usually simulated it via creating an object that ends with /. But the behavior doesn't work in Stat and Delete.

  • If user call Stat("test") after CreateDir("test"), he will get ObjectNotExist error.
  • If user call Delete("test") after CreateDir("test"), no object will be removed and test/ will be kept in service.

So @xuanwo made this proposal: GSP-93: Add ObjectMode Pair to add the ObjectMode pair, and this pair COULD be used in the following operations:

  • Create: set the output object's ObjectMode
  • Stat: ObjectMode hint, returns error if ObjectMode not meet.
  • Delete: ObjectMode hint

For Stat and Delete

  • Service SHOULD use the ObjectMode pair as a hint.
  • Service could have different implementations for different ObjectMode.

Take s3 as an example, we simulate CreateDir via creating object ends with /. CreateDir("test") will create an object test/ in s3. And we can

  • stat this object via Stat("test", pairs.WithObjectMode(types.ObjectModeDir))
  • delete this object via Delete("test", pairs.WithObjectMode(types.ObjectModeDir))

For more details, please refer to Implement GSP-93: Add ObjectMode Pair.

Add Maximum File Size for Storage Write#

Depending on the size of the data you are uploading, services offer different options, like upload a file in a single operation, in parts, or through append operation.

We use Write to handle single write operation, and the size is not unlimited.

If we upload a file with size out of limit in a single operation, we will get an error like Request Entity Too Large in azblob. Same with copy,fetch, etc.

We should figure out the error before sending request to reduce the consumption of network resources.

So @JinnyYi made this proposal GSP-97: Add Maximum File Size for Storage Write to add maximum size restriction as service related metadata for storage operations.

This proposal is still a draft, and any comments are welcome.

Community#

Summer 2021 of Open Source Promotion Plan#

This week, we got more new hands join in, and the discussion group is getting more and more active. You are welcome to keep an eye on our forum: https://forum.beyondstorage.io/, where all event-related announcements will be posted.

For convenience, @xxchan added Q&A at community's website. You can also add more questions at OSPP 2021 Q&A collection.

Notice: The deadline for registration for the program is 13th June. Please submit your application asap.

For more details, please refer to https://beyondstorage.io/community/events/ospp-summer-2021.