diff --git a/project.clj b/project.clj index f7fae08..840ceb6 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,4 @@ -(defproject views "0.4.5" +(defproject views "0.4.6" :description "You underestimate the power of the SQL side" :url "https://github.com/diligenceengine/views" diff --git a/src/views/base_subscribed_views.clj b/src/views/base_subscribed_views.clj index 30eecea..491658e 100644 --- a/src/views/base_subscribed_views.clj +++ b/src/views/base_subscribed_views.clj @@ -4,7 +4,7 @@ [views.subscribed-views :refer [ISubscribedViews]] [views.filters :refer [view-filter]] [views.db.load :refer [initial-view]] - [views.db.util :refer [with-retry]] + [views.db.util :refer [with-retry log-exception]] [clojure.tools.logging :refer [debug info warn error]] [clojure.core.async :refer [thread]] [clojure.java.jdbc :as j])) @@ -60,8 +60,12 @@ (when (seq view-sigs) (doseq [vs view-sigs] (thread - (let [iv (subscribe-and-compute db persistence templates vs namespace subscriber-key)] - (send-fn* send-fn subscriber-key :views.init iv))))))) + (try + (let [iv (subscribe-and-compute db persistence templates vs namespace subscriber-key)] + (send-fn* send-fn subscriber-key :views.init iv)) + (catch Exception e + (error "when subscribing to" vs) + (log-exception e)))))))) (unsubscribe-views [this msg] diff --git a/src/views/db/load.clj b/src/views/db/load.clj index 1b335d4..c1eae6e 100644 --- a/src/views/db/load.clj +++ b/src/views/db/load.clj @@ -4,7 +4,8 @@ (:require [clojure.tools.logging :refer [debug info warn error]] [clojure.java.jdbc :as j] - [honeysql.core :as hsql])) + [honeysql.core :as hsql] + [views.db.util :refer [safe-map log-exception serialization-error?]])) (defn view-query "Takes db and query-fn (compiled HoneySQL hash-map) @@ -30,5 +31,11 @@ (post-process-result-set new-view templates) (hash-map new-view)) (catch SQLException e - (warn (.getMessage e)) - (warn "Broken view sig: " (pr-str new-view))))) + (if (serialization-error? e) + (throw e) + (do + (warn "Broken view sig: " (pr-str new-view)) + (log-exception e)))) + (catch Exception e + (error "when computing initial-view for" new-view) + (log-exception e))))