YAS3FS (Yet Another S3-backed File System) is a Filesystem in Userspace (FUSE) interface to Amazon S3. It was inspired by s3fs but rewritten from scratch to implement a distributed cache synchronized by Amazon SNS notifications. A web console is provided to easily monitor the nodes of a cluster.
Does yas3fs do anything to deal with S3 only providing eventual consistency for read-after-write?
For example, say a node receives an SNS notification that a file has changed and so invalidates its cache. If the node then requests the file from S3 the new version of the file is not guaranteed to be returned. If the old version of the file is then cached it will not be invalidated until the file is updated again.
Does yas3fs somehow wait for the new version of the file? Or does this turn out to not be an issue in practice? Or am I misunderstanding something :)?
I don't believe we do, it would probably behoove us to send the new ETag in change alerts and keep a lisr of list of those changes so we can poll headObject until S3 has synchronized.
Does yas3fs do anything to deal with S3 only providing eventual consistency for read-after-write?
For example, say a node receives an SNS notification that a file has changed and so invalidates its cache. If the node then requests the file from S3 the new version of the file is not guaranteed to be returned. If the old version of the file is then cached it will not be invalidated until the file is updated again.
Does yas3fs somehow wait for the new version of the file? Or does this turn out to not be an issue in practice? Or am I misunderstanding something :)?
Thanks for the awesome project!