IQSS logo

IRC log for #dataverse, 2019-06-13

Connect via chat.dataverse.org to discuss Dataverse (dataverse.org, an open source web application for sharing, citing, analyzing, and preserving research data) with users and developers.

| Channels | #dataverse index | Today | | Search | Google Search | Plain-Text | plain, newest first | summary

All times shown according to UTC.

Time S Nick Message
01:11 jri joined #dataverse
03:11 jri joined #dataverse
04:10 jri joined #dataverse
06:41 juancorr joined #dataverse
07:14 jonas4711 joined #dataverse
08:03 poikilotherm joined #dataverse
10:11 pdurbin poikilotherm: morning. Feeling better?
10:11 poikilotherm Yeah :-)
10:12 pdurbin Great! Did you see the default=root pull request got merged? And that I made another one? :)
10:13 poikilotherm Metamizole to the resuce
10:13 poikilotherm Yes, I saw that.
10:13 poikilotherm Crafting an issue currently
10:13 poikilotherm So this PR has an issue to connect to :-d
10:14 poikilotherm I would plege for not merging the if construct, but try to improve things.
10:15 pdurbin Ah, you might make an alternative pull request?
10:15 poikilotherm Will mention some ideas in my issue, and your solution is obviously one option
10:28 poikilotherm Alright, telco done. Back to issues.
10:45 pdurbin great
11:17 poikilotherm Jesus.
11:17 poikilotherm This grew long
11:17 poikilotherm https://github.com/IQSS/dataverse/issues/5943
11:24 * pdurbin scrolls
11:24 pdurbin It's complicated. :)
11:24 poikilotherm Yes
11:24 poikilotherm But there is no easy answer
11:24 poikilotherm And the problem itself is complex
11:25 poikilotherm I tried to explain it briefly, hope you guys can follow my crude logic
11:26 pdurbin You don't care if I close #5907 in favor of this new one, do you?
11:26 poikilotherm Sure, go ahead.
11:26 poikilotherm I linked it in my "header"
11:27 pdurbin Yeah, I'm still reading. I saw. Thanks.
11:28 pdurbin When you say "devs worked around it" what time frame are you talking about? This week? Recent pull requests from me?
11:30 poikilotherm No.
11:30 poikilotherm Ever since 2014
11:30 poikilotherm Looks like you guys never heard of this bug.
11:31 poikilotherm And you used to write code and it "just worked"
11:31 poikilotherm Nobody stumbled over a case, where it didn't
11:31 poikilotherm And as the GF versions was frozen since that time, you never had breaking code
11:32 poikilotherm One thing lead to another, people got used to the way it worked
11:32 pdurbin We certainly didn't know that javax.el-3.0.1-b03 was buggy. Do we have a link to the bug that's in there?
11:32 poikilotherm I'm not blaming anyone, this just has been bad luck
11:33 poikilotherm I didn't link the bugs, but I linked the madness article
11:33 poikilotherm Lots of links and more in depth explanation in there
11:33 poikilotherm Plus links to bug reports
11:34 pdurbin Right. Let me see if I can find that specific bug report quick.
11:35 poikilotherm You might be stopped by java.net being closed down
11:35 poikilotherm Those things got moved to GitHub IIRC due to moving to Eclipse
11:35 pdurbin Meanwhile, it sounds like you're ok with my option b style pull request: https://github.com/IQSS/dataverse/pull/5940 . Is that right? If it gets merged, you're ok with that?
11:37 poikilotherm I would prefer not using an if. I don't it's very readable right now, as it is left unclear, why this is in there. And it is not easily testable
11:38 poikilotherm Maybe a Math.max(1,page) would do the trick without code branch?
11:39 poikilotherm Or a Math.max(0,...) in the paginationStart calculus
11:40 poikilotherm Or even do not allow a value of 0 in the setter
11:40 poikilotherm The var is assigned by JSF calling setPage()
11:41 poikilotherm Maybe handling this in the setter with a max() is best. This is a enclosed things, which is easily testable
11:42 poikilotherm Wow, that sentence got mixed up a lot...
11:42 poikilotherm (Hope you get my point)
11:51 pdurbin_m joined #dataverse
11:51 pdurbin_m I got recruited to carry a cello to school.
11:51 poikilotherm Hehe. Good luck
11:55 pdurbin_m in the rain
12:01 poikilotherm Hope you have a good case to carry it safely ;-)
12:11 pdurbin It's a soft case but mission accomplished. Just a drizzle, really.
12:11 pdurbin poikilotherm: are you interested in making an alternative pull request?
12:15 donsizemore joined #dataverse
12:18 poikilotherm If you want me to :-D
12:24 pdurbin poikilotherm: sure!
12:40 pdurbin poikilotherm: I'm seeing "This is fixed in EL org.glassfish:javax.el 3.0.1-b05 which is being pulled into wildfly 8.x" at https://github.com/eclipse-ee4j/mojarra/issues/3075#issuecomment-381966695
12:40 * poikilotherm reads the bug repot
12:42 poikilotherm Yeah, this is at least the perfect bug report for string madness :-)
12:42 poikilotherm Congrats!
12:42 poikilotherm Shall I add this to the description? (Dunno if you can add this)
12:42 poikilotherm You did well, not so easy to dig in GitHub
12:49 pdurbin Thanks. And this release has the bug fix, right? https://github.com/javaee/uel-ri/releases/tag/javax.el-3.0.1-b05
12:52 pdurbin If so, one of these commits should have the bug fix on the el (expression language) side: https://github.com/javaee/uel-ri/commits/b2119f4523a307827a057ecf160fc490dac5f6f6
12:54 pdurbin poikilotherm: you're saying that a title of " javax.faces.INTERPRET_EMPTY_ST​RING_SUBMITTED_VALUES_AS_NULL doesn't work at all #3075 " makes sense, right? This is the behavior we have with Glassfish 4.1? That setting doesn't work?
12:57 poikilotherm Lemme see. Is there a default value for the root dataverse, too?
12:57 jri joined #dataverse
12:59 poikilotherm Hmm doesn't look like.
12:59 poikilotherm Why has this been working in the past, then?
12:59 poikilotherm Because this should be the same problem
13:00 pdurbin It's all very, very confusing.
13:01 poikilotherm It's like surgery
13:02 poikilotherm Don't get afraid of the blood ;-)
13:03 pdurbin Well, I'm not even sure I have the story straight. You wrote about princes and swords, plowshares and dwarfs. Elves. Should we restart for the 100th time what is going on?
13:03 pdurbin Or should I think about it some more while I bike to work?
13:03 pdurbin restate*
13:04 poikilotherm Hehehe, I thought about going through JSF cycle, but then thought that would be too much
13:05 poikilotherm Shall I refactor the description to squezze out humoristic things?
13:06 pdurbin It sounds like our intention with the very first commit of Dataverse 4.0 that we set INTERPRET_EMPTY_ST​RING_SUBMITTED_VALUES_AS_NULL to true for a reason. When you fill in a form, we don't want to save empty strings to our database. This was our intention. Is that right?
13:06 poikilotherm Sounds right
13:07 poikilotherm That is why this settings had been created upstream in the first place
13:08 poikilotherm See http://balusc.omnifaces.org/2015/10/the-empty-string-madness.html at part "JSF 1.0/1.1"
13:09 poikilotherm People needed to add their converter, which was clumsy
13:10 pdurbin Ok. But you're saying we never noticed that this setting doesn't even work?
13:11 poikilotherm Well it worked, but stopped working when EL 3.0 was released
13:11 poikilotherm https://stackoverflow.com/questions/21880017/javax-faces-interpret-empty-string-submitted-values-as-null-does-not-work-anymor
13:12 pdurbin Ok, please slow down. Did the setting work for us when we shipped Dataverse 4.0 on Glassfish 4.1 or not?
13:13 poikilotherm I am not sure. I don't know what version of GF you used in those days
13:14 pdurbin "Required Glassfish Versiion 4.1 is with weld v.2.2.4 module." http://guides.dataverse.org/en/4.0/installation/prerequisites.html ... we have always required Glassfish 4.1 for Dataverse 4.
13:14 poikilotherm Dataverse 4.0 was released on 5/20/2015
13:15 pdurbin "Required Glassfish Versiion 4.1 is with weld v.2.2.4 module." http://guides.dataverse.org/en/4.0/installation/prerequisites.html ... we have always required Glassfish 4.1 for Dataverse 4.
13:15 poikilotherm Well, then this must have been broken all time, because the first fixed version is 3.0.1-b05, which is (at least when looking at the MANIFEST) not shipped with your GF version
13:15 poikilotherm There might be a chance that there was some kind of backport
13:15 pdurbin Ok, so let me ask my question again.
13:16 pdurbin Did the INTERPRET_EMPTY_ST​RING_SUB​MITTED_VALUES_AS_NULL=true setting work for us when we shipped Dataverse 4.0 on Glassfish 4.1 or not?
13:17 poikilotherm No, it should not have been working. :-/
13:17 pdurbin Ok. Does this mean that all of our databases have empty strings in them that should have been null values? That we intended to be null values, I mean.
13:18 poikilotherm Unsure. But we can take a look
13:19 poikilotherm In theory, this should be the case, as long as there are no other things reverting this
13:19 poikilotherm EclipseLink or other might do some magic
13:19 poikilotherm Well we could dig deeper by add debugging to JSF phases
13:24 pdurbin We could create a built in user and not fill in "affiliation" (not required) and see what gets saved to the database, a null or an empty string.
13:26 poikilotherm Hmm. Wait a sec. Looking at DataversePage.init() now
13:27 poikilotherm We know this works pretty well
13:27 poikilotherm (On GF 4.1)
13:27 poikilotherm When you access the page, I am sure that dataverseService.findRootDataverse() is used to get the root dataverse
13:27 poikilotherm I know because I fell across that a few times :-D
13:28 poikilotherm This means, going from that call up the branches, that alias and if have to be null
13:29 poikilotherm Otherwise the else branch was never reachable
13:29 poikilotherm And going ever higher, the whole thing is only reachable if ownerId is also null
13:30 poikilotherm So this HAS to work
13:30 pdurbin But what about my "affiliation" test? What do you think? Any bets on if it will be null or empty string in the database when you create a user through JSF? :)
13:30 poikilotherm Let me look at the code first
13:31 poikilotherm Err... do you have the class name at hands for this?
13:32 pdurbin I'm doing this: \pset null 'Ø'
13:33 pdurbin and this: select useridentifier,affiliation from authenticateduser;
13:33 pdurbin You can look at the code if you want but I'm talking about behavior. :)
13:34 poikilotherm Yeah. But please keep in mind that EclipseLink might transform this again
13:34 pdurbin Oh?
13:34 pdurbin So you aren't taking any bets? :)
13:34 poikilotherm I don't know the layers in between
13:35 poikilotherm The form is processed, services called, DAO and DTO done
13:35 poikilotherm Lots of places things could happen to that String object
13:35 poikilotherm The model contains no annotations for this attribute
13:36 poikilotherm AuthenticatedUser.java:L89
13:37 pdurbin oooo, I think I just found something
13:38 pdurbin poikilotherm: is this "if ( nonEmpty(inf.getAffiliation()) ) {" a smoking gun? https://github.com/IQSS/dataverse/blob/v4.14/src/main/java/edu/harvard/iq/dataverse/authorization/users/AuthenticatedUser.java#L153
13:39 poikilotherm Lemme see where this comes from
13:39 pdurbin Is it an indication that INTERPRET_EMPTY_ST​RING_SUB​​MITTED_VALUES_AS_NULL=true never worked for us and that we put that "if non empty" in there to prevent empty strings from being saved to the database?
13:40 pdurbin If I take out that "if" will an empty string be saved to "affiliation"?
13:40 pdurbin Spoiler: right now a null is saved, probably because of that "if".
13:43 poikilotherm that nonEmpty() is coming from StringUtil:L40
13:43 poikilotherm it catches both null and empty strings
13:43 poikilotherm Well this is definitly worth a try
13:45 poikilotherm I try to find that XHTML file with the user form
13:45 poikilotherm With those mapping params
13:46 poikilotherm Ah I think I got it...
13:46 poikilotherm dataverseuser.xhtml:L622
13:48 poikilotherm Yes, this <p:inputText> is dropped inside the UserDisplayInfo object
13:48 jri joined #dataverse
13:50 poikilotherm This stuff doesn't seem to be tampered with along the way
13:52 pdurbin_m joined #dataverse
13:52 pdurbin_m walking to a bike share station
13:52 poikilotherm :-)
13:53 pdurbin_m because my stupid new lock broke
13:53 poikilotherm Meh
13:53 poikilotherm Please keep in mind: I have about 1h left
13:53 pdurbin_m My last bike lock lasted 20 years and my new one lasted 20 days.
13:54 poikilotherm Things tend to get worse over time
13:54 pdurbin_m Dataverse too? :)
13:55 poikilotherm Sure
13:55 pdurbin_m :(
13:55 poikilotherm Everything
13:55 poikilotherm Chaos is a state using less energy
13:56 poikilotherm I once had a shirt as a kid...
13:56 pdurbin_m I think I disagree. Dataverse 4 has matured a lot. The team too. And we have a more engaged community.
13:56 poikilotherm Yes, that got better :-)
13:56 poikilotherm But it needed a lot of energey
13:56 poikilotherm And still needs it
13:56 pdurbin_m I don't sleep much. :)
13:57 poikilotherm :-D
13:57 poikilotherm I know.
13:57 poikilotherm Poor Phil, up at 6 or even 5 am to talk to some silly german guy :-D
13:57 poikilotherm I repeat: whoever invented timezones is to be sued by me
14:01 pdurbin_m :)
14:01 pdurbin_m Should we just set INTERPRET_EMPTY_ST​RING_SUB​MITTED_VALUES_AS_NULL to false? It's more honest.
14:02 poikilotherm Well, at least in theory it should not matter
14:03 poikilotherm I think about simply adding some debugging statements and give it a whirl
14:03 pdurbin_m No. It does matter. It's an expression of behavior.
14:03 poikilotherm But you want this setting to be set to true for later...
14:04 pdurbin_m No. Set it to true in the future. When we are off Glassfish 4. And remove as many "if empty" lines as we can then. Right?
14:06 pdurbin_m Make the current behavior explicit, I'm saying. Set it to false. Small chunks.
14:06 pdurbin_m Step 1. Set to false.
14:06 pdurbin_m Step 2. Switch to Payara 5.
14:06 poikilotherm We definitly should have a look at verifying our theory first...
14:07 poikilotherm It might be all wrong
14:07 pdurbin_m Step 3. Set it to true and remove "if empty" code we don't need anymore.
14:07 poikilotherm I am no expert in this stuff, maybe I dug at the wrong X
14:07 pdurbin_m Do you like this plan?
14:07 poikilotherm Sounds to easy :-D
14:07 poikilotherm And I don't think it reflects all cases
14:08 poikilotherm Like that converting to 0 with primitive int
14:26 pdurbin_m poikilotherm: are you sure?
14:27 poikilotherm Not yet
14:28 poikilotherm Ok, I just enabled my Minikube cluster on our OpenStack cluster to be used locally with Telepresence
14:28 poikilotherm In theory, I should be able to swap the dataverse container to a local one now :-)
14:28 poikilotherm Then I can do development
14:29 poikilotherm Running this stuff locally eats my RAM
14:36 pdurbin poikilotherm: not sure yet but are you willing to help confirm your assertion?
14:36 poikilotherm Obviously
14:37 pdurbin Great!
14:37 poikilotherm I am setting up gear to have test deployments running
14:37 pdurbin Ah, great. Need any help?
14:38 poikilotherm I don't think you can help me with telepresence or K8s ;-)
14:41 pdurbin I barely even know what they are. :)
14:46 poikilotherm Ok, this needs more investigation
14:46 poikilotherm I'm outta here for today.
14:46 poikilotherm Pick up kids ;-)
14:47 poikilotherm Do roofing
14:47 poikilotherm Cu tomorrow
14:47 pdurbin bye!
14:48 jri joined #dataverse
14:50 pdurbin donsizemore: hi! So we'll do the docker cp in the jenkins job?
15:01 donsizemore @pdurbin yes, i'll put it there. was thinking docker-aio/ would get other docker runs but jenkins is fine. i closed my PR
15:07 pdurbin donsizemore: cool. Again, either way is fine with me. Thanks!
15:30 pdurbin donsizemore: how often does the cron tmp cleaner run?
15:46 donsizemore nightly @ 0105
15:46 donsizemore we won't need it once we're either on jenkins permsies and/or don't use /tmp
15:49 pdurbin donsizemore: well, I think Jenkins keeps building because of the webhook. Should I delete the webhook?
16:21 pdurbin donsizemore: also, did you ever hear back from Andrey if he got the confirmation email or not?
17:16 donsizemore he said danny wrote to him
17:16 donsizemore i dunno much more than that
17:50 pdurbin Hmm, ok. Thanks.
17:51 pdurbin donsizemore: so should I delete the webhook? So files stop showing up in /tmp? Or maybe you can give me sudo access to run the tmp cleaner? I'm flexible. :)
17:55 donsizemore i can just disable the job until you're done testing. i'm not "sposed" to give an outsider sudo
17:56 donsizemore i deleted the trigger for now
17:56 pdurbin donsizemore: thanks! Can you please delete the files in /tmp too?
18:00 donsizemore done
18:03 pdurbin Thanks!
18:22 donsizemore sorry i'm still mired in backup cleanup. with large VMs this stuff takes forever
18:31 pdurbin No problem. BUILD SUCCESS as of a9483ac just now for the API test suite.
18:32 pdurbin donsizemore: when do I declare victory? How many BUILD SUCCESS in a row?
18:38 donsizemore @pdurbin i got a different error each time, so i say a success is a success
18:39 pdurbin :)
18:39 pdurbin I'm thinking 3 in a row.
18:41 pdurbin But I'm doing a `git pull` in between each one, which isn't very scientific of me. :)
18:47 donsizemore it's what jenkins would do (and what i had been doing (and still failing each time))
18:48 pdurbin True, it's a little more real world to have the pulls in there. :)
18:49 pdurbin Uh, oh, 500 errors now. And the "run the api test suite" script slows way down. This happened yesterday too. Why?
18:49 * pdurbin runs `top`
18:49 donsizemore welcome to my world
18:49 pdurbin heh
18:50 pdurbin Do we need to clean out Docker extra hard between runs?
18:50 pdurbin bjonnh: help!
18:59 donsizemore i had been periodically removing old images
19:00 pdurbin donsizemore: at some point I'm just going to have to hit Ctrl-C on this 'run the tests' script, I think. Any idea why Glassfish is so unhappy in the docker container?
19:01 pdurbin I guess I should be running `top` from inside the container rather than from the host, the Jenkins server.
19:03 pdurbin The tests are very
19:03 pdurbin slowly
19:03 pdurbin failing
19:03 pdurbin one
19:03 pdurbin by
19:03 pdurbin one
19:10 pdurbin donsizemore: is it possible that the `docker rm` or whatever isn't working?
19:11 pdurbin I'm asking because when I "ssh" into the container, an older commit than I expect is deployed to glassfish.
19:22 bjonnh pdurbin: docker run --rm  image
19:22 bjonnh is pretty useful
19:22 bjonnh if you want to run a container but not keep it after
19:22 bjonnh there is a docker purge command to clean up
19:23 donsizemore a day or two ago i removed all containers and images
19:23 bjonnh docker system prune -f
19:23 bjonnh is a way to clean hard
19:23 donsizemore if you want me to kill it and wipe everything out
19:23 bjonnh docker system prune -af
19:23 bjonnh kills everything IIRC
19:23 donsizemore @bjonnh millenial for "nuke" =)
19:24 bjonnh docker X prune -f
19:24 bjonnh where X can be image, network, volume
19:24 bjonnh container maybe?
19:28 bjonnh also be careful, docker likes to mess with firewalls, don't expose ports you don't want to REALLY expose
19:28 bjonnh so many kubernetes clusters open to the world :D
19:29 donsizemore PORT     STATE  SERVICE 8080/tcp closed http-proxy
19:30 donsizemore oh, heh. @pdurbin killed the container
19:30 donsizemore i thought we wanted to shut down and nuke the container once tests complete, hence the server.log docker-cp
19:59 sivoais joined #dataverse
20:44 pdurbin Did I? I don't know what I'm doing. :)

| Channels | #dataverse index | Today | | Search | Google Search | Plain-Text | plain, newest first | summary

Connect via chat.dataverse.org to discuss Dataverse (dataverse.org, an open source web application for sharing, citing, analyzing, and preserving research data) with users and developers.