You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by NicoK <gi...@git.apache.org> on 2017/09/25 13:00:07 UTC
[GitHub] flink issue #4358: [FLINK-7068][blob] change BlobService sub-classes for per...
Github user NicoK commented on the issue:
https://github.com/apache/flink/pull/4358
After an offline discussion with @tillrohrmann, we agreed to have more of the transient vs. permanent BLOB handling inside the `BlobServer` by including the type into the `BlobKey`. The caches, however, remain separate (with a common base class for shared code) because of the different cache guarantees they give. In addition, we decided upon having a get-and-delete functionality for transient BLOBs (as planned by a TODO item previously).
This means the following changes:
- the `BlobServer` deletes transient BLOBs after they have been successfully downloaded to a BLOB cache (the client acknowledges that)
- the `TransientBlobCache` and `PermanentBlobCache` differ in the functionality they provide:
- `PermanentBlobCache` uses ref-counting for cleaning up its resources
- `TransientBlobCache` imposes the user to manually delete requested BLOB files (from the cache!)
- `TransientBlobCache` allows uploading (transient) BLOBs
- `TransientBlobCache` allows non-job-related BLOBs
- both have a GET method: `#getTransientFile()` vs. `#getPermanentFile()`
- irrespective of the actual cache being used, the `BlobServer` decides whether to delete the BLOB (transient BLOBs only) or not (permanent BLOBs)
- theoretically, a permanent BLOB could also be retrieved from the `TransientBlobCache` (and the other way around if job-related) - this behaviour is not used though but basic tests exist to cover it
---