 (defn +spec
   "Retrieve a spec (for the given UBID) and add it to the band. This assumes
    only one tile-spec will be found. If multiple tile-specs exists, behavior
-   is undefined."
+   is undefined.
+
+   If a tile-spec is not found, then this function returns nil. The band should
+   not be ingested."
   [band]
   (log/debugf "looking for tile-spec for %s" (:ubid band))
   (let [spec (first (tile-spec/query {:ubid (:ubid band)}))]
-    (if (nil? spec)
-      (throw (ex-info (format "no tile-spec for %s" (:ubid band)) {}))
-      (merge band spec))))
+    (if (some? spec)
+      ;; then add the spec properties to the band
+      (merge band spec)
+      ;; this returns nil, the band will be filtered out
+      ;; by `conforms?`
+      (log/warnf "no tile-spec present, skipping %s"))))
 
 (defn int16-fill
   "Produce a buffer used to detect INT16 type buffers containing all fill data."

  "Saves all bands in dir referenced by path."
  ([scene-dir source]
   (let [band-xf   (comp (map +spec)
                         (map +fill)
                         (map +locate)
                         (map (fn [band] (assoc band :source (:id source))))
                         (filter conforms?))]
     (dorun (map #(process-band % source) (scene->bands scene-dir band-xf)))
     :done)))


  [tile]
  (let [data (:data tile)
        fill (:fill tile)]
    (and (some? fill) (some? data) (zero? (.compareTo (.rewind data)
                                                      (.rewind fill))))))

(defn locate-fn
  "Build projection coordinate point calculator for GDAL dataset."
