Class EventingS3ObjectKeyLoader

  • All Implemented Interfaces:
    com.netflix.spinnaker.front50.model.ObjectKeyLoader, java.lang.Runnable

    public class EventingS3ObjectKeyLoader
    extends java.lang.Object
    implements com.netflix.spinnaker.front50.model.ObjectKeyLoader, java.lang.Runnable
    An ObjectKeyLoader is responsible for returning a last modified timestamp for all objects of a particular type.

    This implementation listens to an S3 event stream and applies incremental updates whenever an event is received indicating that an object has been modified (add/update/delete).

    It is significantly faster than delegating to `s3StorageService.listObjectKeys()` with some slight latency attributed to the time taken for an event to be received and processed.

    Expected latency is less than 1s (Amazon

    • Constructor Summary

      Constructors 
      Constructor Description
      EventingS3ObjectKeyLoader​(java.util.concurrent.ExecutorService executionService, com.fasterxml.jackson.databind.ObjectMapper objectMapper, S3MetadataStorageProperties s3Properties, TemporarySQSQueue temporarySQSQueue, com.netflix.spinnaker.front50.model.StorageService storageService, com.netflix.spectator.api.Registry registry, boolean scheduleImmediately)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.Map<java.lang.String,​java.lang.Long> listObjectKeys​(com.netflix.spinnaker.front50.model.ObjectType objectType)  
      void run()  
      void shutdown()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • EventingS3ObjectKeyLoader

        public EventingS3ObjectKeyLoader​(java.util.concurrent.ExecutorService executionService,
                                         com.fasterxml.jackson.databind.ObjectMapper objectMapper,
                                         S3MetadataStorageProperties s3Properties,
                                         TemporarySQSQueue temporarySQSQueue,
                                         com.netflix.spinnaker.front50.model.StorageService storageService,
                                         com.netflix.spectator.api.Registry registry,
                                         boolean scheduleImmediately)
    • Method Detail

      • shutdown

        @PreDestroy
        public void shutdown()
        Specified by:
        shutdown in interface com.netflix.spinnaker.front50.model.ObjectKeyLoader
      • listObjectKeys

        public java.util.Map<java.lang.String,​java.lang.Long> listObjectKeys​(com.netflix.spinnaker.front50.model.ObjectType objectType)
        Specified by:
        listObjectKeys in interface com.netflix.spinnaker.front50.model.ObjectKeyLoader
      • run

        public void run()
        Specified by:
        run in interface java.lang.Runnable