Uploaded image for project: 'Jackrabbit Oak'
  1. Jackrabbit Oak
  2. OAK-8551

Minimize network calls in cloud data stores (performance optimization)

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.16.0, 1.18.0, 1.10.4
    • 1.20.0
    • None

    Description

      Oak cloud data stores (e.g. AzureDataStore, S3DataStore) are by definition more susceptible to performance degradation due to network issues.  While we can't do much about the performance of uploading or downloading a blob, there are other places within the implementations where we are making network calls to the storage service which might be avoidable or minimized.

      One example is the exists() call to check whether a blob with a particular identifier exists in the blob storage.  In some places exists() is being called where instead we could simply attempt the network access and handle failures elegantly, avoiding making an extra network call.  In other places perhaps a cache could be used to minimize round trips.

      Another example is the higher-level getReference() call in DataStoreBlobStore.  This asks the implementation for a DataRecord and then gets the reference from that, but in truth the data store backend can already obtain a reference for an identifier on its own.  Asking for the DataRecord however requires a network request to get the blob metadata for the record.

      Attachments

        Issue Links

          Activity

            People

              mattvryan Matt Ryan
              mattvryan Matt Ryan
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: