Skip to content

Commit c9b2be4

Browse files
authored
Merge pull request #1849 from neotyk/dev/event-type-logging
fix: better logging.
2 parents f985629 + ac63e87 commit c9b2be4

File tree

7 files changed

+65
-11
lines changed

7 files changed

+65
-11
lines changed

src/clj/athens/self_hosted/clients.clj

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
(ns athens.self-hosted.clients
22
"Client comms"
33
(:require
4+
[athens.common-events :as common-events]
45
[athens.common-events.schema :as schema]
56
[athens.common.logging :as log]
67
[cognitect.transit :as transit]
@@ -70,24 +71,26 @@
7071
valid-server-event? (schema/valid-server-event? data)]
7172
(if (or valid-event-response?
7273
valid-server-event?)
73-
(do
74+
(let [type (common-events/find-event-or-atomic-op-type data)
75+
status (:event/status data)]
7476
(log/debug "Sending to username:" username
7577
", event-id:" (:event/id data)
76-
", type:" (:event/type data)
77-
", status:" (:event/status data))
78+
(if type
79+
(str ", type: " type)
80+
(str ", status: " status)))
7881
(http/send! channel (->transit data)))
7982
;; TODO internal failure mode, collect in reporting
8083
(log/error "Not sending invalid event to username:" username
8184
", event-id:" (:event/id data)
82-
", type:" (:event/type data)
85+
", type:" (common-events/find-event-or-atomic-op-type data)
8386
", invalid schema:"
8487
"event-response take:" (str (schema/explain-event-response data))
8588
", server-event take:" (str (schema/explain-server-event data))))))
8689

8790

8891
(defn broadcast!
8992
"Broadcasts event to all connected clients"
90-
[{:event/keys [id type] :as event}]
91-
(log/debug "Broadcasting event-id:" id "type:" type)
93+
[{:event/keys [id] :as event}]
94+
(log/debug "Broadcasting event-id:" id "type:" (common-events/find-event-or-atomic-op-type event))
9295
(doseq [client (keys @clients)]
9396
(send! client event)))

src/clj/athens/self_hosted/components/datascript.clj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
(ns athens.self-hosted.components.datascript
22
(:require
33
[athens.common-db :as common-db]
4+
[athens.common-events :as common-events]
45
[athens.common-events.resolver.atomic :as atomic]
56
[athens.common.logging :as log]
67
[athens.self-hosted.event-log :as event-log]
@@ -26,7 +27,7 @@
2627
(doseq [[id data] (if in-memory?
2728
event-log/initial-events
2829
(event-log/events fluree-conn))]
29-
(log/debug "Processing" (pr-str id) "with" (pr-str data))
30+
(log/info "Processing" (pr-str id) "with" (common-events/find-event-or-atomic-op-type data))
3031
(atomic/resolve-transact! conn data)
3132
(swap! total inc))
3233
(log/info "✅ Replayed" @total "events."))

src/clj/athens/self_hosted/components/web.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
(str "Invalid event: " (pr-str data))
7979
explanation)))
8080
(let [{:event/keys [id type]} data]
81-
(log/debug "username:" username ", event-id:" id ", type:" type "received valid event")
81+
(log/info "Received valid event" "username:" username ", event-id:" id ", type:" (common-events/find-event-or-atomic-op-type data))
8282
(let [{:event/keys [status]
8383
:as result} (valid-event-handler datascript fluree in-memory? server-password channel username data)]
8484
(log/debug "username:" username ", event-id:" id ", processed with status:" status)

src/clj/athens/self_hosted/web/presence.clj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,16 @@
1515

1616
(defn- valid-password
1717
[conn channel id {:keys [session-intro]}]
18-
(let [session-id (str (utils/random-uuid))
18+
(let [username (:username session-intro)
19+
session-id (str (utils/random-uuid))
1920
session (assoc session-intro :session-id session-id)]
20-
(log/info channel "New Client Intro:" session-intro)
21+
(log/info "New Client Intro:" session-intro)
2122
(clients/add-client! channel session)
2223
(clients/send! channel (common-events/build-presence-session-id-event session-id))
2324
(let [datoms (map ; Convert Datoms to just vectors.
2425
(comp vec seq)
2526
(d/datoms @conn :eavt))]
26-
(log/debug channel "Sending" (count datoms) "eavt")
27+
(log/debug "Sending" (count datoms) "eavt to" (pr-str username))
2728
(clients/send! channel
2829
(common-events/build-db-dump-event datoms)))
2930
(clients/send! channel

src/cljc/athens/common_events.cljc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,20 @@
110110
{:event/id event-id
111111
:event/type :op/atomic
112112
:event/op atomic-op}))
113+
114+
115+
(defn find-event-or-atomic-op-type
116+
"Finds `:event/type` or type of atomic op"
117+
[event-or-op]
118+
(let [event? (and (contains? event-or-op :event/type)
119+
(not= :op/atomic (:event/type event-or-op)))]
120+
(if event?
121+
(:event/type event-or-op)
122+
(let [op (or (:event/op event-or-op)
123+
event-or-op)
124+
atomic? (:op/atomic? op)]
125+
(if atomic?
126+
(:op/type op)
127+
(let [trigger (:op/trigger op)]
128+
(or (:op/type trigger)
129+
trigger)))))))

src/cljs/athens/events/remote.cljs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@
143143
(log/debug ":remote/reject-forwarded-event event:" (pr-str event))
144144
(let [db' (update db :event-sync #(event-sync/remove % :memory id event))
145145
memory-log (event-sync/stage-log (:event-sync db') :memory)]
146+
(log/info ":remote/reject-forwarded-event memory-log count" (count memory-log))
146147
{:db db'
147148
;; Rollback and reapply all events in the memory stage.
148149
;; If there's no events to reapply, just mark as synced.
@@ -162,6 +163,7 @@
162163
memory-log (event-sync/stage-log (:event-sync db') :memory)
163164
page-removes (graph-ops/contains-op? (:event/op event) :page/remove)]
164165
(log/debug ":remote/apply-forwarded-event new event?:" (pr-str new-event?))
166+
(log/info ":remote/apply-forwarded-event memory-log count" (count memory-log))
165167
{:db db'
166168
:fx [[:dispatch-n (cond-> []
167169
;; Mark as synced if there's no events left in memory.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
(ns athens.common-events.utils-test
2+
(:require
3+
[athens.common-events :as sut]
4+
[athens.common-events.graph.atomic :as atomic-graph-ops]
5+
[athens.common-events.graph.composite :as composite-graph-ops]
6+
[clojure.test :as t]))
7+
8+
9+
(t/deftest find-event-or-atomic-op-type-test
10+
(t/testing "event type extraction"
11+
(let [event (sut/build-presence-offline-event "session-id")]
12+
(t/is (= :presence/offline (sut/find-event-or-atomic-op-type event)))))
13+
14+
(t/testing "atomic operation extraction from op"
15+
(let [op (atomic-graph-ops/make-block-save-op "block-uid" "block text")]
16+
(t/is (= :block/save (sut/find-event-or-atomic-op-type op)))))
17+
18+
(t/testing "atomic operation extraction from event"
19+
(let [event (sut/build-atomic-event
20+
(atomic-graph-ops/make-block-save-op "block-uid" "block text"))]
21+
(t/is (= :block/save (sut/find-event-or-atomic-op-type event)))))
22+
23+
(t/testing "composite operation extraction from op"
24+
(let [op (composite-graph-ops/make-consequence-op {:op/type :madeup/name} [])]
25+
(t/is (= :madeup/name (sut/find-event-or-atomic-op-type op)))))
26+
27+
(t/testing "composite operation extraction from event"
28+
(let [event (sut/build-atomic-event
29+
(composite-graph-ops/make-consequence-op {:op/type :madeup/name} []))]
30+
(t/is (= :madeup/name (sut/find-event-or-atomic-op-type event))))))

0 commit comments

Comments
 (0)