Giter VIP home page Giter VIP logo

blaze-storage's People

Contributors

beikov avatar mobe91 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

blaze-storage's Issues

Implement support for bucket object retention plans

The idea is to introduce something like a bucket object retention plan which can be assigned to bucket objects. If needed we could introduce a default assignment to objects based on e.g. bucket object prefix.

The plan defines a retention period e.g. 30 days and an action. Interesting actions are

  • Move to storage + set new retention plan
  • Delete
  • Publish a bucket object event

The use case is to provide a temporary storage for e.g. attachments that are used when sending an email. An attachment can be put into the bucket with a retention of e.g. 30 days. An e-mail is sent with the bucket objects as attachment. The bucket object is kept around for a while in case it is necessary to debug or re-send the e-mail.

Implement garbage collector for deleted files

Right now we only set the state of a file to deleted but don't actually delete the file.
A custom task that runs periodically should delete files and on complection also remove the database entries and update pending statistics.
That task could also be triggered in an after-transaction-synchronization-callback (CDI event)

Implement NFS server

Use https://github.com/dCache/nfs4j for implementing access to buckets through NFS mounts.

We have to think about how to assign "persistent" inode numbers to bucket objects and also to their "virtual directories" as that is what NFS needs to identify objects.

One possible implementation would be to simply not make inodes persistent, but just cache them in memory. This would be ok for uses that only do reads and creates, but even then this could be painful. All clients have to reset their local inode caches after a restart.

A much better implementation would be to allow a global configuration, that when enabled, will maintain a inode number on the bucket_object table based on a sequence through Blazebit/blaze-persistence#365

For directories, we would need a separate table where inodes are managed.

Add client API that allows streaming

We need an API that allows streaming data. Currently, we expect an input stream to be available, which could be lazy, but usually is not. Being able to write to the final outputstream within the correct context would be nice if possible with JAX-RS

Publish sources JAR for WAR projects

Currently we don't publish the sources JAR for WAR projects which results in not being able to reuse the Java classes used for the admin UI. The maven WAR plugin should be adapted to publish this artifact as well.

Implement notifications for bucket events

Like S3, we should implement support for bucket events with support for the following sinks

  • SNS
  • SQS
  • Kafka

We should also implement the alerting based on these events.

The event publishing options are

  • Publish event in a PreCommitListener => Might trigger an event although the TX failed
  • Publish event in a PostCommitListener => Might miss an event in case of outage
  • Source events via Debezium => Requires proper setup

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.