Fork me on GitHub
#boot
<
2015-08-06
>
onetom02:08:36

the boot which installed using brew install boot-clj has updated it's core, aether, etc dependencies and since then multiple of our projects dont run but give this error:

clojure.lang.ExceptionInfo: java.lang.NoSuchMethodError: boot.App.getClojureName()Ljava/lang/String;
    data: {:file
           "/var/folders/yr/3b2j3m0s3rs5_511xsvxp3v80000gp/T/boot.user3543958616418125125.clj",
           :line 21}
java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError: boot.App.getClojureName()Ljava/lang/String;
            java.lang.NoSuchMethodError: boot.App.getClojureName()Ljava/lang/String;
                  boot.pod/make-pod                           pod.clj:  458
      pandeiro.boot-http/eval280/fn                     boot_http.clj:   40
                                ...
               boot.user/eval333/fn  boot.user3543958616418125125.clj:   19
                                ...
                 clojure.core/apply                          core.clj:  624
          boot.core/construct-tasks                          core.clj:  678
                                ...
                 clojure.core/apply                          core.clj:  624
                  boot.core/boot/fn                          core.clj:  706
clojure.core/binding-conveyor-fn/fn                          core.clj: 1910
where line 19 is:
(deftask dev "Build se.marketplace for development." [] (comp (serve :port 3008 :reload true :handler (quote se.marketplace.api/ring-handler)) (watch)))

onetom02:08:50

i will try to download the binary as the tweet mentioned it, but it would have been better if i could just upgrade from brew

onetom02:08:36

oh, actually there is no binary for osx on the https://github.com/boot-clj/boot#install 😕 should i look somewhere else?

onetom03:08:13

looks like pandeiro's boot-http is breaking

alandipert03:08:04

@onetom: unfortunately the new 'core' isn't compatible with the old App binary

onetom03:08:07

tried: * 0.6.3-SNAPSHOT * 0.6.3 * 0.6.2 none worked

onetom03:08:37

who is in charge of the brew formula then?

alandipert03:08:01

usually @martinklepsch but technically anyone could send them a PR to bump the boot version

onetom03:08:26

ok, i will try, thx! it's great u were still awake 😉

alandipert03:08:43

hehe, working on slides for a boot/hoplon preso tomorrow

onetom03:08:47

do u know u can delete these slack site previews after u posted?

alandipert03:08:53

actually last week i was in hawaii, and quite close to your timezone!

onetom03:08:55

just to reduce clutter....

alandipert03:08:01

i think it's somewhere in the preferences

alandipert03:08:26

ah yes, Preferences > Media & links

onetom03:08:27

well, it's good in general, but sometimes it's useless

onetom03:08:49

@alandipert: it worked, thx!

onetom03:08:14

is pandeiro on slack, btw, just under some other name? does he needs more convincing to switch from irc?

alandipert03:08:38

@onetom: glad it works! i haven't seen pandeiro in here yet

alandipert03:08:21

i have been really enjoying slack for work but i'm still not sure fi it's the best thing for OSS

alandipert03:08:35

not unsure enough to not be here though 😄

micha03:08:03

@alandipert: where are you presenting this presentation?

alandipert03:08:41

not sure if it's gonna be recorded or broadcast yet

martinklepsch09:08:55

@onetom: let me know if you have any questions about the brew formula or would like me to do it. Should be quick to do :)

onetom10:08:53

@martinklepsch: i've never done it, so it would be great if you could

onetom10:08:23

i just modified it on this one machine in the office, so that solution served the 2 of us for today at least

martinklepsch10:08:56

@onetom: will do it from the iPad now if you can paste me the sha256

petrus10:08:30

Any tips on how to get CircleCI to cache boot?

martinklepsch10:08:34

@petrus I guess you could put the executable into a directory that's in cache_directories? Currently downloading every time myself

onetom12:08:08

@martinklepsch: hm, i havent thought about doing it directly from the github interface, so i tried it now: https://github.com/Homebrew/homebrew/pull/42559

sbrady19:08:47

Hi...wondering if anyone else sees a (big) class leak when creating and destroying a pod. I've been seeing this with boot watch and boot-test. My profiling shows that none of the new classes are getting gc'd between invocations of test by boot watch.

micha19:08:19

sbrady: which version of java are you using?

micha19:08:41

hm, so no permgen

sbrady19:08:56

nope...not a permgen issue

micha19:08:07

do you know what's holding the references?

sbrady19:08:12

still eventually get an oom exception after enough invocations of the test

sbrady19:08:48

I'm not sure. Can't think of anything. I've tried stripping things down to a minimal build.boot with boot watch test.

sbrady19:08:00

I still see the class leak.

micha19:08:00

are you profiling in visualvm or something where you have a [Force GC] button?

micha19:08:05

and if so does that help?

sbrady19:08:13

yep visualvm...and I've tried forcing gc. No go.

micha19:08:36

if you can make a repo demonstrating the problem i'll be happy to have a look

sbrady19:08:45

I can clearly see the number of classes growing every time I trigger the watch to run test again

micha19:08:57

and please open a ticket if you can

micha19:08:34

is boot-test calling the destroy-pod function?

micha19:08:54

there is a function in the boot.pod namespace, destroy-pod! i thin kit's called

micha19:08:03

that closes the classloader and whatnot

micha19:08:29

one thing i can think of is perhaps agents are taking a while to shut down

micha19:08:40

destroy-pod! kills those

micha19:08:02

and calls .close on the classloader

sbrady19:08:20

well, boot-test uses the pod-service

micha19:08:30

so that will happen automatically

alandipert19:08:31

(core/cleanup (worker-pods :shutdown))

sbrady19:08:34

and there's a call to :refresh at each invocation of boot-test

micha19:08:52

yeah that should be reaping the previous pod

sbrady19:08:56

so it should be calling destroy

micha19:08:34

sbrady: does it happen with the helloworld test, too?

micha19:08:46

like just a single failing test

sbrady19:08:50

yes, that's what I'll show. I've stripped it down that far. Also forked boot-test and was stripping it down further. Still leaks.

micha19:08:19

i was hoping we were past all of this simple_smile

sbrady19:08:48

@micha: here's a repo that I'm using to reproduce this: https://github.com/stephenbrady/boot-pod-leak

micha19:08:12

excellent, thanks!

sbrady19:08:39

hoping you can find something...i've gotten way deeper into pod internals that I thought I would simple_smile

micha19:08:03

haha i'm sorry, it's not pretty in there

johnwalker23:08:07

i'm having trouble understanding why a test is failing

johnwalker23:08:35

boot-environ is being used to set the database-url environment variable

johnwalker23:08:17

but executing boot run-test shows the environment variable as being nil

johnwalker23:08:54

@cddr the issue is that boot-environ does not appear to set environment variables at all

johnwalker23:08:26

it seems to make a call to with-redefs only

micha23:08:59

johnwalker: the tests are run in a fresh pod each time

micha23:08:21

vars in the main pod are not accessible from the test pods

micha23:08:34

i think this could be the issue you're seeing

micha23:08:41

@johnwalker: ^^

johnwalker23:08:04

possibly? i also experienced this issue with the serve task

johnwalker23:08:40

from boot http

micha23:08:52

the solution is to use the environment, like set system properties or environment variables

johnwalker23:08:59

oh, it also uses pods 😜

micha23:08:13

those are truly "environment"

micha23:08:21

vs vars in a namespace which are not really

johnwalker23:08:51

ok, so either use a bash script with export DATABASE_URL or System/setProperty?

johnwalker23:08:43

thanks @micha

micha23:08:18

i believe environ can also work from system properties

micha23:08:53

which you can set in your build.boot via system/setproperty or by providing BOOT_JVM_OPTIONS

micha23:08:13

or a bash script of course

johnwalker23:08:40

yeah, looks like it reads system properties

micha23:08:41

i generally use environment variables for production in the 12-factor way

johnwalker23:08:02

thanks again, very useful

micha23:08:18

sure my pleasure