This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-05-27
Channels
- # admin-announcements (1)
- # beginners (1)
- # boot (37)
- # cbus (1)
- # cider (44)
- # cljs-dev (16)
- # cljsjs (2)
- # cljsrn (18)
- # clojure (205)
- # clojure-belgium (6)
- # clojure-china (1)
- # clojure-india (1)
- # clojure-russia (24)
- # clojure-spec (21)
- # clojure-turkiye (1)
- # clojure-uk (72)
- # clojurescript (91)
- # core-async (4)
- # cursive (12)
- # data-science (2)
- # datascript (2)
- # datomic (12)
- # emacs (6)
- # flambo (7)
- # funcool (12)
- # hoplon (24)
- # incanter (2)
- # jobs-discuss (29)
- # keechma (2)
- # lein-figwheel (2)
- # leiningen (2)
- # mount (13)
- # nyc (2)
- # om (76)
- # om-next (1)
- # onyx (38)
- # other-languages (4)
- # planck (40)
- # re-frame (33)
- # reagent (101)
- # ring-swagger (5)
- # slack-help (1)
- # untangled (7)
- # yada (14)
@rohit nice job tracking that down. weird how it would affect the hash of :version as that is clearly not nil, but I guess we should not question JS. 😉
@thheller: as part of calculating the hash of a keyword, you need to calculate hash-string
of its ns
which in most cases is null. that was the root of the bug.
1. When the system starts cache contains nil
as ”null
" and its value is 0
2. We compute hash of :version
taking that 0 into account.
3. Loads of operations such that the cache is reset.
4. We calculate the hash of ”null”
as it is in a set. Now the value in the cache of ”null"
is something other than 0
5. We create a new :version
taking the new value of ”null"
cache entry and try to compare its hash to earlier one and they do not match.
6. The whole system is now unstable.
my colleague @skapoor pointed out the length of maps and imports affected point 3. hence the issue was only showing up under some very specific conditions.