anchor.diff:                                      :parameters `(("keys" . ,(format nil "~{~A~^,~}" blob-keys))))
                (declare (ignore headers uri stream2 must-close))
                (if (/= 200 status-code)
  -                 (error "Error deleting blobs, the HTTP response code ~A: ~A" status-code reason-phrase)
  +                 (error "Error deleting files, the HTTP response code ~A: ~A" status-code reason-phrase)
                    body))))
       (let* ((filtered-keys (set-difference blob-keys *logs-to-keep* :test #'string=))
              (total (length filtered-keys))
  
positive.code:       (dolist (batch (test-grid-utils::split-list filtered-keys 50))
          (delete-batch batch)
          (incf done (length batch))
          (log:info "~A/~A blobs deleted" done total)))))
  
negative.code: that all the files are submitted and the return value
  has a blobkey for every file.
  
  Signals an ERROR in case of problems.
  
  BATCH-SIZE is the number of files submitted in one request,
  leave the default value here in most cases.
  
  KEEP-NAMES-P allows to use (FILE-NAMESTRING pathname) as a blobkey
  instead of randomily generated new key. But this possibility
  was used only during migration between different Google storage
  APIs. Now it is disabled on the server-side."))
  
  (defgeneric delete-files (blobstore blob-keys)
    (:documentation
     "Deletes files from BLOBSTORE. The fiels
  are specified by BLOB-KEYS - a list of strings."))
  