Github user d2r commented on a diff in the pull request:

    https://github.com/apache/storm/pull/845#discussion_r45135495
  
    --- Diff: storm-core/src/clj/backtype/storm/daemon/supervisor.clj ---
    @@ -454,10 +455,82 @@
           (shutdown-worker supervisor id))
         ))
     
    +(defn get-blob-localname
    +  "Given the blob information either gets the localname field if it exists,
    +  else routines the default value passed in."
    +  [blob-info defaultValue]
    +  (if-let [val (if blob-info (get blob-info "localname") nil)] val 
defaultValue))
    +
    +(defn should-uncompress-blob?
    +  "Given the blob information returns the value of the uncompress field, 
handling it either being
    +  a string or a boolean value, or ifs its not specified then returns false"
    +  [blob-info]
    +  (boolean (and blob-info
    +             (if-let [val (get blob-info "uncompress")]
    +               (.booleanValue (Boolean. val))))))
    +
    +(defn remove-blob-references
    +  "Remove a reference to a blob when its no longer needed."
    +  [localizer storm-id conf]
    +  (let [storm-conf (read-supervisor-storm-conf conf storm-id)
    +        blobstore-map (storm-conf TOPOLOGY-BLOBSTORE-MAP)
    +        user (storm-conf TOPOLOGY-SUBMITTER-USER)
    +        topo-name (storm-conf TOPOLOGY-NAME)]
    +    (if blobstore-map
    +      (doseq [[k, v] blobstore-map]
    +        (.removeBlobReference localizer
    +          k
    +          user
    +          topo-name
    +          (should-uncompress-blob? v))))))
    +
    +(defn blobstore-map-to-localresources
    +  "Returns a list of LocalResources based on the blobstore-map passed in."
    +  [blobstore-map]
    +  (if blobstore-map
    +    (for [[k, v] blobstore-map] (LocalResource. k (should-uncompress-blob? 
v)))
    +    ()))
    +
    +(defn add-blob-references
    +  "For each of the downloaded topologies, adds references to the blobs 
that the topologies are
    +  using. This is used to reconstruct the cache on restart."
    +  [localizer storm-id conf]
    +  (let [storm-conf (read-supervisor-storm-conf conf storm-id)
    +        blobstore-map (storm-conf TOPOLOGY-BLOBSTORE-MAP)
    +        user (storm-conf TOPOLOGY-SUBMITTER-USER)
    +        topo-name (storm-conf TOPOLOGY-NAME)
    +        localresources (blobstore-map-to-localresources blobstore-map)]
    +    (if blobstore-map
    +      (.addReferences localizer localresources user topo-name))))
    +
    +(defn rm-topo-files
    +  [conf storm-id localizer rm-blob-refs?]
    +  (try
    +    (if (= true rm-blob-refs?)
    +      (remove-blob-references localizer storm-id conf))
    --- End diff --
    
    Don't need `(= true`


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to