         ; Update partition tablet map.
         tablets (->> records
                      (reduce (partial append-record-updates field->family) {})
-                     (reduce (partial update-tablets store f) (::tablets part)))
+                     (reduce (partial update-tablets! store f) (::tablets part)))
         part' (assoc part
                      :merkle-db.data/count (count (tablet/read (node/get-data store (get-in tablets [:base :id]))))
                      ::tablets tablets

        (cons [next-key next-data] (record-seq next-seqs))))))


(defn- tablet-families
  "Returns a map of tablet keys to sets of fields contained in those tablets."
  [part]
  (into {}
        (map (juxt key (comp :fields val)))
        (dissoc (::tablets part) :base)))


(defn read-tablets
  "Performs a read across the tablets in the partition by selecting based on
  the desired fields. The reader function is called on each selected tablet
  along with any extra args, producing a collection of lazy record sequences
  which are combined into a single sequence of key/record pairs."
  [store part fields read-fn & args]
  (->> (set fields)
       (choose-tablets (tablet-families part))
       (map (comp :id (::tablets part)))
       (map (partial node/get-data store))
       (map #(apply read-fn % args))
       (record-seq)

        updates))))


(defn- update-tablets!
  [store f tablets [family-key tablet-updates]]
  (let [tablet (or (node/get-data store (get-in tablets [family-key :id]))
                   (throw (ex-info (format "Couldn't find tablet %s in backing store"
