Hello
Thanks for posting on the ML for the issue.
This had been discussed off-chart here:
https://github.com/linagora/tmail-backend/discussions/1061
Of course: +1 on my side.
Best regards,
Benoit
On 15/07/2024 05:31, Tran Tung wrote:
Hello everyone,
Recently, while developing a new feature, we implemented a function to
copy data on S3 from one bucket to another. To achieve this, we used
two methods: BlobStoreDAO.read and BlobStoreDAO.save. This approach is
suboptimal as it downloads and uploads data, consuming unnecessary
traffic and resources.
S3 APIs support internal object copying between buckets, eliminating
external traffic. This has led me to consider introducing a new API,
copy, to the BlobStoreDAO interface. It looks like:
`public Mono<BlobId> copy(BucketName sourceBucketName, BlobId
sourceBlobId, BucketName targetBucketName);`
However, after some consideration, this would make BlobStoreDAO no
longer abstract.
Upon receiving Benoit's idea of creating S3ClientFactory and S3Client,
and injecting it into S3BlobStoreDAO (currently, we instantiate
S3Client directly within the S3BlobStoreDAO constructor), Then it will
resolving this issue.
// The copy API is not the only one that would benefit from this
change. In the past, I have also wanted to configure S3 lifecycle
settings (e.g., automatic deletion after a certain period), but I
postponed it due to similar obstacles.
I appreciate your feedback and thoughts on this proposal.
Regards,
Tung, Tran Van
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org