Fixed unit tests

Fixed unit tests

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/amedw/mud-server.git/'


rev comment

rev comment

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/michaelsbradleyjr/transwarp.git/'


Handle keywords correctly

Handle keywords correctly

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/screen6/bigquery-clj.git/'


Enable plinth.core namespace to be uberjar main

Before this commit, `plinth.core` did not work as the main entry point
of an uberjar for two reasons. (1) There was no `:gen-class` directive
for the namespace. (2) The entry point specified as an argument to the
`-main` function was not being `require`d, so trying to `resolve` it
would just return `nil` and thus silently fail.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/brendanyounger/plinth.git/'


[EN] Remove bucket creation fixture in s3 tests.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/scheduled-message-works.git/'


Doc improvements for dummy-response

Doc improvements for dummy-response

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/turbovote-http-api.git/'


Adds a test for a larger DAG.

Adds a test for a larger DAG.

error: pathspec 'test/onyx/peer/dag_test.clj' did not match any file(s) known to git

--- test/onyx/peer/dag_test.clj
+++ test/onyx/peer/dag_test.clj
@@ -0,0 +1,255 @@
+(ns onyx.peer.dag-test
+  (:require [midje.sweet :refer :all]
+            [onyx.queue.hornetq-utils :as hq-util]
+            [onyx.peer.task-lifecycle-extensions :as l-ext]
+            [onyx.api]))
+
+(def config (read-string (slurp (clojure.java.io/resource "test-config.edn"))))
+
+(def n-queued-messages 25)
+
+(def batch-size 50)
+
+(def echo 5)
+
+(def id (str (java.util.UUID/randomUUID)))
+
+(def hq-config {"host" (:host (:non-clustered (:hornetq config)))
+                "port" (:port (:non-clustered (:hornetq config)))})
+
+(def a-queue (str (java.util.UUID/randomUUID)))
+
+(def b-queue (str (java.util.UUID/randomUUID)))
+
+(def c-queue (str (java.util.UUID/randomUUID)))
+
+(def j-queue (str (java.util.UUID/randomUUID)))
+
+(def k-queue (str (java.util.UUID/randomUUID)))
+
+(def l-queue (str (java.util.UUID/randomUUID)))
+
+(def a-segments
+  (map (fn [n] {:n n})
+       (range n-queued-messages)))
+
+(def b-segments
+  (map (fn [n] {:n n})
+       (range n-queued-messages (* 2 n-queued-messages))))
+
+(def c-segments
+  (map (fn [n] {:n n})
+       (range (* 2 n-queued-messages) (* 3 n-queued-messages))))
+
+(def coord-opts
+  {:hornetq/mode :udp
+   :hornetq/server? true
+   :hornetq.udp/cluster-name (:cluster-name (:hornetq config))
+   :hornetq.udp/group-address (:group-address (:hornetq config))
+   :hornetq.udp/group-port (:group-port (:hornetq config))
+   :hornetq.udp/refresh-timeout (:refresh-timeout (:hornetq config))
+   :hornetq.udp/discovery-timeout (:discovery-timeout (:hornetq config))
+   :hornetq.server/type :embedded
+   :hornetq.embedded/config (:configs (:hornetq config))
+   :zookeeper/address (:address (:zookeeper config))
+   :zookeeper/server? true
+   :zookeeper.server/port (:spawn-port (:zookeeper config))
+   :onyx/id id
+   :onyx.coordinator/revoke-delay 5000})
+
+(def peer-opts
+  {:hornetq/mode :udp
+   :hornetq.udp/cluster-name (:cluster-name (:hornetq config))
+   :hornetq.udp/group-address (:group-address (:hornetq config))
+   :hornetq.udp/group-port (:group-port (:hornetq config))
+   :hornetq.udp/refresh-timeout (:refresh-timeout (:hornetq config))
+   :hornetq.udp/discovery-timeout (:discovery-timeout (:hornetq config))
+   :zookeeper/address (:address (:zookeeper config))
+   :onyx/id id})
+
+(def conn (onyx.api/connect :memory coord-opts))
+
+(hq-util/create-queue! hq-config a-queue)
+
+(hq-util/create-queue! hq-config b-queue)
+
+(hq-util/create-queue! hq-config c-queue)
+
+(hq-util/create-queue! hq-config j-queue)
+
+(hq-util/create-queue! hq-config k-queue)
+
+(hq-util/create-queue! hq-config l-queue)
+
+(hq-util/write-and-cap! hq-config a-queue a-segments echo)
+
+(hq-util/write-and-cap! hq-config b-queue b-segments echo)
+
+(hq-util/write-and-cap! hq-config c-queue c-segments echo)
+
+(def d identity)
+
+(def e identity)
+
+(def f identity)
+
+(def g identity)
+
+(def h identity)
+
+(def i identity)
+
+(def catalog
+  [{:onyx/name :A
+    :onyx/ident :hornetq/read-segments
+    :onyx/type :input
+    :onyx/medium :hornetq
+    :onyx/consumption :concurrent
+    :hornetq/queue-name a-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :B
+    :onyx/ident :hornetq/read-segments
+    :onyx/type :input
+    :onyx/medium :hornetq
+    :onyx/consumption :concurrent
+    :hornetq/queue-name b-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :C
+    :onyx/ident :hornetq/read-segments
+    :onyx/type :input
+    :onyx/medium :hornetq
+    :onyx/consumption :concurrent
+    :hornetq/queue-name c-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :D
+    :onyx/fn :onyx.peer.dag-test/d
+    :onyx/type :function
+    :onyx/consumption :concurrent
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :E
+    :onyx/fn :onyx.peer.dag-test/e
+    :onyx/type :function
+    :onyx/consumption :concurrent
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :F
+    :onyx/fn :onyx.peer.dag-test/f
+    :onyx/type :function
+    :onyx/consumption :concurrent
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :G
+    :onyx/fn :onyx.peer.dag-test/g
+    :onyx/type :function
+    :onyx/consumption :concurrent
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :H
+    :onyx/fn :onyx.peer.dag-test/h
+    :onyx/type :function
+    :onyx/consumption :concurrent
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :I
+    :onyx/fn :onyx.peer.dag-test/i
+    :onyx/type :function
+    :onyx/consumption :concurrent
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :J
+    :onyx/ident :hornetq/write-segments
+    :onyx/type :output
+    :onyx/medium :hornetq
+    :onyx/consumption :concurrent
+    :hornetq/queue-name j-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :K
+    :onyx/ident :hornetq/write-segments
+    :onyx/type :output
+    :onyx/medium :hornetq
+    :onyx/consumption :concurrent
+    :hornetq/queue-name k-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :L
+    :onyx/ident :hornetq/write-segments
+    :onyx/type :output
+    :onyx/medium :hornetq
+    :onyx/consumption :concurrent
+    :hornetq/queue-name l-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}])
+
+;;; A    B       C
+;;;  \  /        |
+;;;   D- >       E
+;;;   |  \     / | \
+;;;   F   \-> G  H  I
+;;;  / \       \ | /
+;;; J   K        L
+
+(def workflow
+  [[:A :D]
+   [:B :D]
+   [:D :F]
+   [:F :J]
+   [:F :K]
+   [:C :E]
+   [:E :G]
+   [:E :H]
+   [:E :I]
+   [:G :L]
+   [:H :L]
+   [:I :L]
+   [:D :G]])
+
+(def v-peers (onyx.api/start-peers conn 1 peer-opts))
+
+(onyx.api/submit-job conn {:catalog catalog :workflow workflow})
+
+(def j-results (hq-util/consume-queue! hq-config j-queue echo))
+
+(def k-results (hq-util/consume-queue! hq-config k-queue echo))
+
+(def l-results (hq-util/consume-queue! hq-config l-queue echo))
+
+(doseq [v-peer v-peers]
+  (try
+    ((:shutdown-fn v-peer))
+    (catch Exception e (prn e))))
+
+(try
+  (onyx.api/shutdown conn)
+  (catch Exception e (prn e)))
+
+(fact (last j-results) => :done)
+
+(fact (last k-results) => :done)
+
+(fact (last l-results) => :done)
+
+(fact (into #{} (concat a-segments b-segments))
+      => (into #{} (butlast j-results)))
+
+(fact (into #{} (concat a-segments b-segments))
+      => (into #{} (butlast k-results)))
+
+(fact (into #{} (concat a-segments b-segments c-segments))
+      => (into #{} (butlast l-results)))
+


Translated the net identification script from jRuby to Clojure.

error: pathspec 'clojure/org/gavrog/clojure/identify_nets.clj' did not match any file(s) known to git

--- clojure/org/gavrog/clojure/identify_nets.clj
+++ clojure/org/gavrog/clojure/identify_nets.clj
@@ -0,0 +1,27 @@
+(ns org.gavrog.clojure.identify_nets
+  (:import (org.gavrog.joss.pgraphs.io Net Archive)
+           (java.lang ClassLoader)
+           (java.io InputStreamReader BufferedReader)))
+
+(defn add-to-archive [archive path]
+  (let [stream (ClassLoader/getSystemResourceAsStream path)]
+    (.addAll archive (-> stream InputStreamReader. BufferedReader.))))
+
+(defn make-archive [version & paths]
+  (let [archive (new Archive version)]
+    (doall (map add-to-archive (repeat archive) paths))
+    archive))
+
+(defn find-net [archive net]
+  (.get archive (-> net .minimalImage .getSystreKey)))
+
+(defn identify [archive net]
+  (cond
+    (not (.isLocallyStable net)) :unstable
+    (.isLadder net) :ladder
+    :else (if-let [found (find-net archive net)]
+            (.getName found)
+            :unknown)))
+
+(defn identify-all-from-file [archive path]
+  (map (partial identify archive) (-> path Net/iterator iterator-seq)))


Initial work for generating git repos for tests

error: pathspec 'test/voom/git_monkey.clj' did not match any file(s) known to git

--- test/voom/git_monkey.clj
+++ test/voom/git_monkey.clj
@@ -0,0 +1,85 @@
+(ns voom.git-monkey
+  (:require [leiningen.voom :as voom]
+            [clojure.java.shell :as sh]
+            [clojure.string :as str]
+            [clojure.pprint :refer [pprint]]))
+
+(defn check-sh-rtn
+  ([rtn] (check-sh-rtn rtn #{0}))
+  ([rtn ok]
+     (when-not (ok (:exit rtn))
+       (throw (ex-info (:err rtn) rtn)))
+     rtn))
+
+(defn sh [& args]
+  (check-sh-rtn (apply sh/sh args)))
+
+(defn git-commit [root-path repo]
+  (sh/with-sh-dir (str root-path "/" repo)
+    (sh "git" "add" ".")
+    (sh "git" "commit" "-av" "--author=git-monkey <git@monkey>"
+        "-m" (str/join " " (repeatedly (+ 5 (rand-int 10))
+                                       #(rand-nth '[git git! monkey monkey!
+                                                    giiiit elbow pants]))))))
+
+(defn affirm-repo [root-path repo]
+  (let [git-dir (str root-path "/" repo)]
+    (sh "mkdir" "-p" git-dir)
+    (sh "git" "init" :dir git-dir)
+    (sh "git" "config" "user.name" "git-monkey" :dir git-dir)
+    (sh "git" "config" "user.email" "git@monkey" :dir git-dir)))
+
+(defn ns-for-proj [proj-name]
+  (symbol (str (namespace proj-name) "." (name proj-name))))
+
+(defn main-for-proj [proj-name]
+  (symbol (str (ns-for-proj proj-name)) "main"))
+
+(defn affirm-proj [root-path {:keys [repo branch path proj-name
+                                     version dependencies]}]
+  (let [git-dir (str root-path "/" repo)
+        src-dir (str git-dir "/" path "/src/" (namespace proj-name))]
+    (sh/sh "git" "checkout" branch :dir git-dir)
+    (sh "mkdir" "-p" src-dir)
+    (spit (str git-dir "/" path "/project.clj")
+          (binding [*print-meta* true]
+            (prn-str `(~'defproject ~proj-name ~version
+                        :dependencies ~(conj dependencies
+                                             '[org.clojure/clojure "1.5.1"])
+                        :main ~(main-for-proj proj-name)))))
+    (spit (str src-dir "/" (name proj-name) ".clj")
+          (str/join "\n"
+                    (map #(with-out-str (pprint %))
+                         `[(~'ns ~(ns-for-proj proj-name)
+                             ~@(when (seq dependencies)
+                                 `[(:require ~@(map ns-for-proj
+                                                    (map first dependencies)))]))
+                           (~'defn ~'main []
+                             ~@(for [[proj] dependencies]
+                                 (list (main-for-proj proj)))
+                             (~'prn '~(ns-for-proj proj-name) ~version))])))))
+
+
+(defn clone-to-voom-repos
+  [root-path & repos]
+  (doseq [repo repos]
+    (sh/with-sh-dir root-path
+      (sh "cp" "-a" repo (str repo "-upstream"))
+      (sh "git" "clone" (str repo "-upstream") (str voom/repos-home "/" repo)))))
+
+(defn crank [root-path]
+  (doto root-path
+    (affirm-repo "crank")
+    (affirm-proj {:repo "crank" :branch "master" :path "modules/foo"
+                  :proj-name 'top/foo :version "1.0.0"})
+    (git-commit "crank")
+
+    (affirm-proj {:repo "crank" :branch "master" :path "modules/foo"
+                  :proj-name 'top/foo :version "1.2.0"})
+    (git-commit "crank")
+
+    (affirm-proj {:repo "crank" :branch "master" :path "modules/bar"
+                  :proj-name 'top/bar :version "1.0.0"
+                  :dependencies '[^{:voom {:version "1.0"}} [top/foo "1.0.0"]]})
+    (git-commit "crank")
+    (clone-to-voom-repos "crank")))


Add user.clj with relod/test helpers.

Add user.clj with relod/test helpers.

error: pathspec 'src/user.clj' did not match any file(s) known to git

--- src/user.clj
+++ src/user.clj
@@ -0,0 +1,25 @@
+(ns user
+  (:require [clojure.tools.namespace.repl :as repl]
+            [clojure.walk :refer [macroexpand-all]]
+            [clojure.pprint :refer [pprint]]
+            [clojure.test :as test]))
+
+;; --- Development Stuff
+
+(defn test-vars
+  [& vars]
+  (repl/refresh)
+  (test/test-vars
+   (map (fn [sym]
+          (require (symbol (namespace sym)))
+          (resolve sym))
+        vars)))
+
+(defn test-ns
+  [ns]
+  (repl/refresh)
+  (test/test-ns ns))
+
+(defn test-all
+  ([] (test/run-all-tests #"^datoteka.tests.*"))
+  ([re] (test/run-all-tests re)))


Added todo-list

Added todo-list

Signed-off-by: Daniel Borchmann <25857343a15bf1edafebc2912e82ecf775c585c1@mailbox.tu-dresden.de>

error: pathspec 'src/conexp/todo.clj' did not match any file(s) known to git

--- src/conexp/todo.clj
+++ src/conexp/todo.clj
@@ -0,0 +1,45 @@
+(ns conexp.todo)
+
+;;
+;; conexp.base
+;;  - make next-closure faster
+;;  - invent and implement parallel-next-closure
+;;
+;; conexp.layout
+;;  - util: implement functions for inf-irr-additive layout
+;;  - force: implement force layout as described by C. Zschalig
+;;  - zschalig: implement initial positioning and force distribution layout as described by C. Zschalig
+;;
+;; conexp.fca
+;;  - retracts?
+;;  - rule-exploration: think about and write some code
+;;  - more for association-rules?
+;;
+;; conexp.graphics
+;;  - draw: implement full lattice editor
+;;  - base: get current lattice layout from a GScene
+;;
+;; conexp.gui
+;;  - plugins: design and implement
+;;  - plugins.contexteditor: design and implement
+;;  - plugins.latticeeditor: design and implement (see conexp.graphics.draw)
+;;  - plugins.codeeditor: design and implement
+;;
+;; conexp.contrib
+;;  - fuzzy: implement some fuzzy fca
+;;  - rough: implement something for rough sets and fca
+;;
+;; conexp.tests
+;;  - util: add more tests
+;;  - base: check whether everything has been tested
+;;  - fca.contexts: finish tests
+;;  - fca.implications: finish tests
+;;  - add tests for everything else too
+;;
+;; doc
+;;  - for namespaces
+;;  - for functions (see conexp.contrib.doc)
+;;  - extend LaTeX-doc
+;;
+
+nil


Remove commented code

Remove commented code

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/kkroening/jackal.git/'


Marginally revise layout.

Marginally revise layout.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/cstorey/nrod.git/'


Add .lein profile

Add .lein profile

error: pathspec '.lein/profiles.clj' did not match any file(s) known to git

--- .lein/profiles.clj
+++ .lein/profiles.clj
@@ -0,0 +1,2 @@
+{:user
+  {:plugins [[lein-exec "0.3.4"]]}}


basic project get endpoint that returns a hardcoded list of projects and requires an api-key parameter

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/physion/ovation-webapi.git/'


Rename :reg-status key => :registration-status

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/election-notification-works.git/'


code cleanup

code cleanup

--- src/metabase/driver/generic_sql/query_processor.clj
+++ src/metabase/driver/generic_sql/query_processor.clj
@@ -66,11 +66,12 @@
     ["count"] `(aggregate (~'count :*) :count)     ; TODO - implement other types of aggregation
     [_ _]     (let [[ag-type field-id] value       ; valid values to `korma.core/aggregate`: count, sum, avg, min, max, first, last
                     field (field-id->kw field-id)]
-                (match ag-type
-                  "distinct" `(aggregate (~'count (raw ~(format "DISTINCT(\"%s\")" (name field)))) :count)
-                  "sum"      `(aggregate (~'sum ~field) :sum)
-                  "avg"      `(aggregate (~'avg ~field) :avg)
-                  "stddev"   `(fields [(sqlfn :stddev ~field) :stddev])))))
+                (match (keyword ag-type)
+                       :avg      `(aggregate (~'avg ~field) :avg)
+                       :distinct `(aggregate (~'count (raw ~(format "DISTINCT(\"%s\")" (name field)))) :count)
+                       :stddev   `(fields [(sqlfn :stddev ~field) :stddev])
+                       :sum      `(aggregate (~'sum ~field) :sum)))))
+                 ;; TODO - `:cum_sum` is not yet implemented (!)

 ;; `:breakout`
 ;; ex.


[WM] fix failing db test

[WM] fix failing db test

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/notification-works.git/'


Add db migration for tag_count.

Add db migration for tag_count.

error: pathspec 'tagcount/src/tagcount/migration.clj' did not match any file(s) known to git

--- tagcount/src/tagcount/migration.clj
+++ tagcount/src/tagcount/migration.clj
@@ -0,0 +1,27 @@
+(ns tagcount.migration
+  (:require [clojure.java.jdbc :as jdbc]
+            [tagcount.core :as core]))
+
+(defn table-exists? [name]
+  (jdbc/query core/pooled-db-spec
+              ["select count(*)
+               from information_schema.tables
+               where table_schema = 'public'
+               and table_name = ?" name]
+              :row-fn #(> (:count %) 0)))
+
+(defn create-tagcount-table []
+  (if (not (table-exists? "tag_count"))
+    (do
+      (println "Creating table tag_count...")
+      (jdbc/db-do-commands core/pooled-db-spec
+                           (jdbc/create-table-ddl
+                             :tag_count
+                             [:tag "varchar(50)" "PRIMARY KEY"]
+                             [:count "int" "NOT NULL"]
+                             [:valid_to "timestamptz" "NOT NULL"])))
+    (println "Table tag_count already exists.")))
+
+(defn -main []
+  (create-tagcount-table)
+  (println "Done!"))


STORM-166: renew thread should only renew creds on leader nimbus.

--- storm-core/src/clj/backtype/storm/daemon/nimbus.clj
+++ storm-core/src/clj/backtype/storm/daemon/nimbus.clj
@@ -984,23 +984,25 @@
 )

 (defn renew-credentials [nimbus]
-  (let [storm-cluster-state (:storm-cluster-state nimbus)
-        renewers (:cred-renewers nimbus)
-        update-lock (:cred-update-lock nimbus)
-        assigned-ids (set (.active-storms storm-cluster-state))]
-    (when-not (empty? assigned-ids)
-      (doseq [id assigned-ids]
-        (locking update-lock
-          (let [orig-creds (.credentials storm-cluster-state id nil)
-                topology-conf (try-read-storm-conf (:conf nimbus) id)]
-            (if orig-creds
-              (let [new-creds (HashMap. orig-creds)]
-                (doseq [renewer renewers]
-                  (log-message "Renewing Creds For " id " with " renewer)
-                  (.renew renewer new-creds (Collections/unmodifiableMap topology-conf)))
-                (when-not (= orig-creds new-creds)
-                  (.set-credentials! storm-cluster-state id new-creds topology-conf)
-                  )))))))))
+  (if (is-leader nimbus :throw-exception false)
+    (let [storm-cluster-state (:storm-cluster-state nimbus)
+          renewers (:cred-renewers nimbus)
+          update-lock (:cred-update-lock nimbus)
+          assigned-ids (set (.active-storms storm-cluster-state))]
+      (when-not (empty? assigned-ids)
+        (doseq [id assigned-ids]
+          (locking update-lock
+            (let [orig-creds (.credentials storm-cluster-state id nil)
+                  topology-conf (try-read-storm-conf (:conf nimbus) id)]
+              (if orig-creds
+                (let [new-creds (HashMap. orig-creds)]
+                  (doseq [renewer renewers]
+                    (log-message "Renewing Creds For " id " with " renewer)
+                    (.renew renewer new-creds (Collections/unmodifiableMap topology-conf)))
+                  (when-not (= orig-creds new-creds)
+                    (.set-credentials! storm-cluster-state id new-creds topology-conf)
+                    ))))))))
+    (log-message "not a leader skipping , credential renweal.")))

 (defn validate-topology-size [topo-conf nimbus-conf topology]
   (let [workers-count (get topo-conf TOPOLOGY-WORKERS)


[WM DC] Removed joda-time exclusion from datomic

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/election-authority-works.git/'


invalid project file

invalid project file

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/CraZySacX/swarmhandler.git/'


[WM] Update deps

[WM] Update deps

The core.async update actually fixed some code that had hit a bug in the version included w/ kehaar (but I think that code was then refactored away).


Begin work on next iteration.

Begin work on next iteration.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject com.damballa/abracad "0.4.4"
+(defproject com.damballa/abracad "0.4.5-SNAPSHOT"
   :description "De/serialize Clojure data structures with Avro."
   :url "http://github.com/damballa/abracad"
   :licenses [{:name "Eclipse Public License"


Bump deps for beta1

Bump deps for beta1

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/terrancesnyder/engulf.git/'


Update newrelic agent *again* ;)

Update newrelic agent *again* ;)

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/mail-works.git/'


Version 1.3.0-SNAPSHOT

Version 1.3.0-SNAPSHOT

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/starcity-properties/odin.git/'


Make datomic env vars consistent w/ other projects


Remove ring-swagger-ui; it's included with compojure-api now


bump version to 2.8.18

bump version to 2.8.18

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/B2W-Digital/pdg-core.git/'


Added explicit dependency to Clojure 1.3.0 in top-level project

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/meowcakes/ring.git/'


Version 1.16.0-SNAPSHOT

Version 1.16.0-SNAPSHOT


Added dependencies

Added dependencies

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/acessocard/microscope.git/'


Fix audit

Fix audit


GET/PUT both tested via dev.ovation.io

GET/PUT both tested via dev.ovation.io


return offsets in to-map

return offsets in to-map

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/tokenmill/clj-gate.git/'


github-util

github-util

error: pathspec 'src/atom_finder/util/github_util.clj' did not match any file(s) known to git

--- src/atom_finder/util/github_util.clj
+++ src/atom_finder/util/github_util.clj
@@ -0,0 +1,51 @@
+(in-ns 'atom-finder.util)
+
+;; https://gist.github.com/jizhang/4325757
+(defn md5 [^String s]
+  (let [algorithm (java.security.MessageDigest/getInstance "MD5")
+        raw (.digest algorithm (.getBytes s))]
+    (format "%032x" (java.math.BigInteger. 1 raw))))
+
+(def github-author
+  {"gcc"       "gcc-mirror"
+   "linux"     "torvalds"
+   "clang"     "llvm-mirror"
+   "freebsd"   "freebsd"
+   "gecko-dev" "mozilla"
+   "vim"       "vim"
+   "webkit"    "WebKit"
+   })
+
+(defn github-repos [proj] (str (github-author proj) "/" proj))
+
+(def repo-rev-strs
+  {"gcc"       "2c3133a09ceedead50c2b585ef7f62738ad5c81e"
+   "linux"     "e19b205be43d11bff638cad4487008c48d21c103"
+   "clang"     "2bcd2d052e5508c12374390e4a2d572988622caf"
+   "freebsd"   "c2b6ea8fa56ce6aba773d820fbf64a4d3efac9f5"
+   "gecko-dev" "dd47bee6468de7e1221b4d006342ad6b9813d0e5"
+   "vim"       "5df95ea9ef34b5a898141ddc7134e4a7de713ba5"
+   "webkit"    "e8c73206a09f734bc64f77d6275a727aa2811754"
+   })
+
+(defn relativize-filename
+  [filename]
+  (-> filename (str/replace #".*opt/src/" "")))
+
+(defn github-url
+  ([author proj rev-str file line]
+   (str "https://github.com/" author "/" proj "/" rev-str "/" file "#L" line))
+  ([found-atom]
+   (let [[proj file] (->> found-atom filename relativize-filename (re-find #"([^/]+)/(.*)") rest)
+         line (start-line found-atom)
+         author (github-author proj)
+         rev-str (repo-rev-strs proj)]
+     (github-url author proj rev-str file line))))
+
+(defn github-commit-url
+  ([author proj rev-str file line L-or-R]
+   (str "https://github.com/" author "/" proj "/commit/" rev-str "#diff-" (md5 file) L-or-R line)))
+
+(github-commit-url (github-author "clang") "clang" "890783b5e028a061bb51a4a978e8114b55073932" "test/clang-rename/TemplatedClassFunction.cpp" 9 "L")
+
+


Overspecified

Overspecified

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/michaelsbradleyjr/shen.clj.git/'


Stub for new test module: commits-stat-test

error: pathspec 'test/arachnida/commits_stat_test.clj' did not match any file(s) known to git

--- test/arachnida/commits_stat_test.clj
+++ test/arachnida/commits_stat_test.clj
@@ -0,0 +1,17 @@
+;
+;  (C) Copyright 2015  Pavel Tisnovsky
+;
+;  All rights reserved. This program and the accompanying materials
+;  are made available under the terms of the Eclipse Public License v1.0
+;  which accompanies this distribution, and is available at
+;  http://www.eclipse.org/legal/epl-v10.html
+;
+;  Contributors:
+;      Pavel Tisnovsky
+;
+
+(ns arachnida.commits-stat-test
+  (:require [clojure.test :refer :all]
+            [arachnida.commits-stat :refer :all]))
+
+