Merge branch '11016-doc-signing-ttl'
authorTom Clegg <tclegg@veritasgenetics.com>
Thu, 3 Oct 2019 15:39:18 +0000 (11:39 -0400)
committerTom Clegg <tclegg@veritasgenetics.com>
Thu, 3 Oct 2019 15:39:18 +0000 (11:39 -0400)
refs #11016

Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg@veritasgenetics.com>

1  2 
lib/config/config.default.yml
lib/config/generated_config.go

index 4cbb7784f82c16dd78dd2528fbc182b8c72e2636,473553e272879742d536edc511033f0456afcedf..4e3bf6d6c937d89ccdc8cdd1781e5f3d76425965
@@@ -368,13 -368,26 +368,26 @@@ Clusters
        # collection's replication_desired attribute is nil.
        DefaultReplication: 2
  
-       # Lifetime (in seconds) of blob permission signatures generated by
-       # the API server. This determines how long a client can take (after
-       # retrieving a collection record) to retrieve the collection data
-       # from Keep. If the client needs more time than that (assuming the
-       # collection still has the same content and the relevant user/token
-       # still has permission) the client can retrieve the collection again
-       # to get fresh signatures.
+       # BlobSigningTTL determines the minimum lifetime of transient
+       # data, i.e., blocks that are not referenced by
+       # collections. Unreferenced blocks exist for two reasons:
+       #
+       # 1) A data block must be written to a disk/cloud backend device
+       # before a collection can be created/updated with a reference to
+       # it.
+       #
+       # 2) Deleting or updating a collection can remove the last
+       # remaining reference to a data block.
+       #
+       # If BlobSigningTTL is too short, long-running
+       # processes/containers will fail when they take too long (a)
+       # between writing blocks and writing collections that reference
+       # them, or (b) between reading collections and reading the
+       # referenced blocks.
+       #
+       # If BlobSigningTTL is too long, data will still be stored long
+       # after the referring collections are deleted, and you will
+       # needlessly fill up disks or waste money on cloud storage.
        #
        # Modifying BlobSigningTTL invalidates existing signatures; see
        # BlobSigningKey note above.
        # The default is 2 weeks.
        BlobSigningTTL: 336h
  
 +      # When running keep-balance, this is the destination filename for
 +      # the list of lost block hashes if there are any, one per line.
 +      # Updated automically during each successful run.
 +      BlobMissingReport: ""
 +
 +      # keep-balance operates periodically, i.e.: do a
 +      # scan/balance operation, sleep, repeat.
 +      #
 +      # BalancePeriod determines the interval between start times of
 +      # successive scan/balance operations. If a scan/balance operation
 +      # takes longer than RunPeriod, the next one will follow it
 +      # immediately.
 +      #
 +      # If SIGUSR1 is received during an idle period between operations,
 +      # the next operation will start immediately.
 +      BalancePeriod: 10m
 +
 +      # Limits the number of collections retrieved by keep-balance per
 +      # API transaction. If this is zero, page size is
 +      # determined by the API server's own page size limits (see
 +      # API.MaxItemsPerResponse and API.MaxIndexDatabaseRead).
 +      BalanceCollectionBatch: 0
 +
 +      # The size of keep-balance's internal queue of
 +      # collections. Higher values use more memory and improve throughput
 +      # by allowing keep-balance to fetch the next page of collections
 +      # while the current page is still being processed. If this is zero
 +      # or omitted, pages are processed serially.
 +      BalanceCollectionBuffers: 1000
 +
        # Default lifetime for ephemeral collections: 2 weeks. This must not
        # be less than BlobSigningTTL.
        DefaultTrashLifetime: 336h
  
            # for s3 driver -- see
            # https://doc.arvados.org/install/configure-s3-object-storage.html
 +          IAMRole: aaaaa
            AccessKey: aaaaa
            SecretKey: aaaaa
            Endpoint: ""
index 40827f8e2fbeaff4b74b1f7aa8c46db35afbe087,3766a7c4de84d0d9939bae184d8b5d12361385ae..d21bb2d284b57d5dfff01a346c0708d98ca8db13
@@@ -374,13 -374,26 +374,26 @@@ Clusters
        # collection's replication_desired attribute is nil.
        DefaultReplication: 2
  
-       # Lifetime (in seconds) of blob permission signatures generated by
-       # the API server. This determines how long a client can take (after
-       # retrieving a collection record) to retrieve the collection data
-       # from Keep. If the client needs more time than that (assuming the
-       # collection still has the same content and the relevant user/token
-       # still has permission) the client can retrieve the collection again
-       # to get fresh signatures.
+       # BlobSigningTTL determines the minimum lifetime of transient
+       # data, i.e., blocks that are not referenced by
+       # collections. Unreferenced blocks exist for two reasons:
+       #
+       # 1) A data block must be written to a disk/cloud backend device
+       # before a collection can be created/updated with a reference to
+       # it.
+       #
+       # 2) Deleting or updating a collection can remove the last
+       # remaining reference to a data block.
+       #
+       # If BlobSigningTTL is too short, long-running
+       # processes/containers will fail when they take too long (a)
+       # between writing blocks and writing collections that reference
+       # them, or (b) between reading collections and reading the
+       # referenced blocks.
+       #
+       # If BlobSigningTTL is too long, data will still be stored long
+       # after the referring collections are deleted, and you will
+       # needlessly fill up disks or waste money on cloud storage.
        #
        # Modifying BlobSigningTTL invalidates existing signatures; see
        # BlobSigningKey note above.
        # The default is 2 weeks.
        BlobSigningTTL: 336h
  
 +      # When running keep-balance, this is the destination filename for
 +      # the list of lost block hashes if there are any, one per line.
 +      # Updated automically during each successful run.
 +      BlobMissingReport: ""
 +
 +      # keep-balance operates periodically, i.e.: do a
 +      # scan/balance operation, sleep, repeat.
 +      #
 +      # BalancePeriod determines the interval between start times of
 +      # successive scan/balance operations. If a scan/balance operation
 +      # takes longer than RunPeriod, the next one will follow it
 +      # immediately.
 +      #
 +      # If SIGUSR1 is received during an idle period between operations,
 +      # the next operation will start immediately.
 +      BalancePeriod: 10m
 +
 +      # Limits the number of collections retrieved by keep-balance per
 +      # API transaction. If this is zero, page size is
 +      # determined by the API server's own page size limits (see
 +      # API.MaxItemsPerResponse and API.MaxIndexDatabaseRead).
 +      BalanceCollectionBatch: 0
 +
 +      # The size of keep-balance's internal queue of
 +      # collections. Higher values use more memory and improve throughput
 +      # by allowing keep-balance to fetch the next page of collections
 +      # while the current page is still being processed. If this is zero
 +      # or omitted, pages are processed serially.
 +      BalanceCollectionBuffers: 1000
 +
        # Default lifetime for ephemeral collections: 2 weeks. This must not
        # be less than BlobSigningTTL.
        DefaultTrashLifetime: 336h
  
            # for s3 driver -- see
            # https://doc.arvados.org/install/configure-s3-object-storage.html
 +          IAMRole: aaaaa
            AccessKey: aaaaa
            SecretKey: aaaaa
            Endpoint: ""