Log of the #duraspace-ff channel on chat.freenode.net

Using timezone: Eastern Standard Time
* kaarefc joins03:27
* eddies leaves05:55
* eddies joins06:03
* eddies leaves
* eddies joins
* kaarefc leaves06:08
* eddies leaves06:38
* eddies joins07:12
* eddies leaves
* eddies joins
* jonathangee joins08:02
* kaarefc joins08:24
* kaarefc leaves08:25
* nbanks joins08:37
* eddies leaves08:44
* eddies joins08:45
* eddies leaves
* eddies joins
* nbanks leaves08:50
* aawoods leaves08:57
* escowles joins09:33
* escowles leaves09:39
* escowles joins
* escowles leaves09:40
* escowles joins
<barmintor>cbeer: in section 3.7.2, part 3.b & 3.c, it describes the algorithm thus: Take all the methods with the best @Path match. Filter the ones that don't support the HTTP method. Sort them by @Consumes, then by @Produces. Take the first method from the resulting set.10:25
so I'm not sure that ties are deterministic :(10:26
* eddies leaves
* eddies joins10:27
* eddies leaves
* eddies joins
committers call, all10:29
https://plus.google.com/hangouts/_/46ed3fe3f2d8606cbc4c4056cc8bb4cce9176ebc
* aawoods_ joins10:30
<cbeer>aawoods_ barmintor escowles jonathangee?10:31
https://plus.google.com/hangouts/_/46ed3fe3f2d8606cbc4c4056cc8bb4cce9176ebc
<escowles>coming, but will have to leave in 15min for dr. appt.10:32
* ajs6f joins10:33
<barmintor>eddies: I also just get a black screen from you for the video, fwiw
<ajs6f>eddies; I get a still picture of Eddie.10:34
Smiling.
awoods: There is an adjustment for bandwidth usage in Google Hangout. That might help.10:35
<barmintor>ajs6f: I don't think you were on yet, but it turns out the JAXRS spec doesn't actually describe a deterministic algorithm for resolving ties
<ajs6f>Life is full of surprises. Why should our code be the same?
BUt can we use @Path to solve the problem?10:36
<barmintor>ajs6f: Not exactly
<ajs6f>Let's give up and go back to fcrepo3.
* nbanks joins
* nbanks leaves
<barmintor>the problem was null values for the Accept header
* nbanks joins
<ajs6f>Can't we just use @DefaultValue/10:37
?
<barmintor>so I can fix it by putting a proxy for describe that @Produces '*/*'
Alas, @DefaultValue cannot help us here
not a param
<ajs6f>Oh, @DefaultValue only works on params? I didn't know that. Oh, well.10:38
Well, a proxy method is essentially created a default value for that header, right?
creating
<barmintor>yeah10:39
<ajs6f>rhauch suggested the use of workspaces for staging and multitenancy, in specific.10:41
Workspaces don't do anything for access control that we couldn't do inside a workspace.10:43
They entirely partition the repo. The only thing that crosses them is eventing and the methods specific to them.
cbeer: I thought that rhauch did say that?
cbeer: But you would remember better than do I— I came into that conversation late.10:44
GRAND JURY INDICTS WORKSPACE FOR MULTITENANCY VIOLATIONS!
You can do that inside a workspace.
eddies: SUre, but that's not access control, right?10:45
<eddies>right, not talking about access control10:46
<ajs6f>Okay.
eddie: I think those links get broken, but we need to check.10:48
One track mind. :)10:49
<cbeer>http://www.day.com/maven/jsr170/javadocs/jcr-2.0/javax/jcr/version/VersionManager.html#merge(java.lang.String, java.lang.String, boolean)
<ajs6f>cbeer: This is one thing that has been worrying me: merge semantics are only defined between _versionable_ nodes.10:50
<cbeer>makes sense though.
<escowles>I've gotta run, bye.
<cbeer>anything else is just move or replace
<ajs6f>Right.
<nbanks>later
<ajs6f>cbeer/eddies: Isn't radical asynchrony a kind of staging?10:52
I got it right!
<cbeer>eddies: standup time11:02
<ajs6f>cbeer: Hang on, eddies is conjuring hackery.
<cbeer>yes. and highlighting eddies seems to distract him away from that
<barmintor>*hisss*
<cbeer>faster on the mute button.11:04
* github-ff joins
[fcrepo4] cbeer deleted rdf-all-the-things-fixme at 23c53a4: http://git.io/2GSJPg
* github-ff leaves
<ajs6f>https://www.pivotaltracker.com/story/show/49205649
<pivotal-bot>feature: Inject authenticated sessions into the JAX-RS resources (started) / owner: A. "Bupholutac" Soroka
* github-ff joins11:05
[fcrepo4] cbeer deleted rdf-all-the-things at 1121558: http://git.io/iRfFcQ
* github-ff leaves
<nbanks>Adam whats the name of the branch?
cool
<cbeer>https://github.com/futures/fcrepo4/commits/4920564911:07
<ajs6f>nigel: The SessionFactory now offers two methods, one to get an authenticated Session, one to get a non-authenticated Session.11:09
I think we could change that when we change it to be Workspace-aware.
like getDefaultSession(Credentials…) and getSession(String workspace, Credentials...)11:10
<nbanks>I've overloaded getSession so that it can optionally take a workspace. I don't think we need a getDefaultSession function as well? Since the getSession that takes no arguments essentially uses the defaults.11:12
<barmintor>eddies: ./rest/{path}/fcr:children11:13
<ajs6f>getSession will only (now) return a non-authenticated Session. I'm saying it should be able to return either an authn'd or non-authn'd Session.
It's a matter of how we want to arrange the params.
We could do one method getSession(String workspace, Credentials...)11:14
which you could call to get the default workspace either by:
getSession(null) -> non-authn'd
or
<nbanks>You can get an authenticated session? https://github.com/futures/fcrepo4/blob/master/fcrepo-http-commons/src/main/java/org/fcrepo/session/SessionFactory.java#L44-L64
<ajs6f>getSession(null, credentials) -> authn'd Session
Oh, yeah. But how do you pack the workspace into that signature as simply as possible. That's the question.11:16
<barmintor>eddies, aawoods: we should correspond about what I present to the NE-FUG on June 3.
<ajs6f>We have two ostensibly optional arguments: workspace and credentials.
<nbanks>I just had an additonal function with the workspace as a 3rd parameter.
<ajs6f>But Java varargs will allow for only one optional argument.
<nbanks>I just overloaded11:17
<ajs6f>Right. I want, if possible, to have fewer methods.
<nbanks>so it wasn't optional in the sense of a vararg
<ajs6f>Right.
<nbanks>We could make it map directly to login. http://docs.jboss.org/modeshape/3.2.0.Final/api/org/modeshape/jcr/JcrRepository.html#login(java.lang.String)11:22
Checking if credentials or namespace is null and calling the appropriate overloaded version of login?11:23
I'm not against overloading rather than checking for null's.11:24
<cbeer>ajs6f: so, one of the commits i made yesterday added the 403 when you try to change jcr: or fedora: properties11:32
but, i believe, mime type is one of those properties11:33
so.. should we fedora immutable and fedora mutable namespaces?
<ajs6f>Urg.
<cbeer>or just declare mime type off limits11:34
i guess that's valid too
<ajs6f>I think we should try to keep one fedora-system namespace that is immutable. Is it just mime type that creates exceptional behavior?
<cbeer>of the one's we've defined so far..11:35
actually, here's the list of fcr3 properties:
objects: state, owner, label, last modified date
datastreams: control group, state, ds location, altID, label, versionable, format URI, checksum type, checksum, mime type11:36
fcrepo4 doesn't have state
<ajs6f>Some of these don't even exist in 4, right?
<cbeer>label is a dc:title
<ajs6f>right.]
<cbeer>altIDs are dc:identifiers i guess
checksums are immutable.. or you have to go through a different API to do it?
<ajs6f>Actually, which of these _are_ immutable?
<barmintor>ds_size, ds_checksum11:37
ds_checksumtype
<cbeer>ajs6f: in fcrepo3, fcrepo4 as is, or intrinsically immutable?
<barmintor>(should only mutate as part of a content change)
<ajs6f>checksum and checksum type we can pack into one.11:38
<cbeer>and we have.
<ajs6f>Right.
<cbeer>i think
<ajs6f>In the reponses we have. I don't know wether we store them together, but we could.
So thisis really about ds props.
<cbeer>we store them separate11:39
but we shouldn't, i think
<ajs6f>Yeah.
<cbeer>ajs6f: owner is the only object property that isn't on a datastream (in fcr3.. i think in 4 we don't care)11:40
but we also don't care about owner.
<ajs6f>What if we move size and checksum off of the ds node onto the content node, which would make it invisible via the API?
<cbeer>they are on the content node now
but didn't you argue the other way yesterday?
<barmintor>aren't they on both nodes?11:41
<cbeer>i only see code to put it on the content node
<ajs6f>I don't think I did, but maybe I did. And I'll go back the other way tomorrow.
<cbeer>to bring us back to my immediate question (because rubydora has integration tests that assume as much):11:42
is mime type a mutable property?
<bljenkins>Project fcrepo4 build #564: UNSTABLE in 18 min: http://ci.projectblacklight.org/jenkins/job/fcrepo4/564/11:43
<cbeer>is the right way to handle mutable properties to stick the other properties in a new namespace?
<ajs6f>Either Mime type is mutable, or we take control over it completely and do characterization to get it.
IMO>11:44
And I don't think we can do the latter.
So it's mutable.
<cbeer>or is only mutable when modifying the content.
which isn't so bad IMO
<barmintor>ajs6f: I think it's mutable, but I also think some things are "mutable as side-effects of another operation"
err… what cbeer said11:45
<cbeer>but i can see someone ingesting stuff as application/octet-stream and then re-typing it later.
<ajs6f>Can it be both? set by our API but also available for tweaking via JCR?
<barmintor>ajs6f: Sure, what I'm saying is that some things you will want to only be changed as side effects
<ajs6f>Like what?11:46
(Like which props?)
<cbeer>well, we've already said anything jcr: or fedora:
so, are there properties we want to lighten?11:47
<ajs6f>I'm actually coming abround to the idea that fedora: is mutable.11:48
<cbeer>all fedora: properties are?
<ajs6f>Only two ds props seem to present a problem.
Why shouldn't we let people change, say, the owner, directly?11:49
<cbeer>because i'll argue we shouldn't track fedora:owner as our own property anyway?
make that a dc:creator or something and do it yourself.
<ajs6f>Okay by me. As long as we can support authZ as much as we need to.
<cbeer>if current_user != 'fedo'; raise UnauthorizedException(); end11:50
<ajs6f>What if I don't own the obejct but am allowed to mutate it?
<cbeer>there must be some schemas for expressing ownership already
<ajs6f>Ownership != autnZ.11:51
<cbeer>good thing we don't have authZ yet
<ajs6f>I don't want to prevent us from ever having it.
If we want to make it a totally
separate concern, that's fine with me. I suggested that in the fall.
But let's have that understood.
Maybe we're trying to ask oursevels a question about what props really _need_11:52
to exist to support the obejct model.
As opposed to supporting fixity.
Or authN/Z.
<cbeer>content type.
<ajs6f>Meaning JCR mixins?
<cbeer>i don't know.11:55
<ajs6f>Actually, I don't know that we need _any_ properties to support the object model itself. It's more or less purely structural.
A lot of the stuff like lastModified and so forth is really useful, but it's not implicit in the model.11:56
Maybe we can break down our node types a bit into smaller pieces: do the 'S' in SOLID.11:57
* github-ff joins11:59
[fcrepo4] barmintor pushed 1 new commit to master: http://git.io/G6aRJA
fcrepo4/master 7571ff0 Benjamin Armintor: a wildcard handler for node description, some convenience stuff for RDF media-types, a lightweight wrapper for getting a session for streaming output
* github-ff leaves
<cbeer>ok. let me make a mess of what we have and see if i can do something useful with it12:00
<ajs6f>Mess it up a notch!
<barmintor>I'm not totally committed to the session-providing object that I introduced in that commit12:01
I wanted to be able to pull that anonymous class out and still defer logging in
but if anyone has a better idea (or just thinks it's a useless abstraction) feel free to cut it12:02
<ajs6f>Where is it?
<barmintor>look in the RDF describe method in FedoraNodes
<ajs6f>thanks12:03
<barmintor>it's the AuthenitcatedSessionProvider thing
cbeer: I also just added an abstract class that holds constants analogous to the ones on MediaType for the RDF content-types- seemed like noise to rebuild them all the time.12:04
<ajs6f>Hm. I' think that may be redundant with the stuff I did to inject Sessions
<barmintor>ajs6f: this is to provide a new session on the event that the StreamingOutput is actually written somewhere12:05
<ajs6f>barmintor: I usually do that stuff in an interface so that you can (instead of importing everything) just impl the interface… do you consider that bad form?
barmintor: as oppossed to failing to write with an exception?12:06
<barmintor>ajs6f: the session isn't opened if you don't use the write method
and thus not left open if you don't use the write method :)12:07
<ajs6f>barmintor: to me, that's the job of try {} finally{}. cause Sessions are really cheap (intentionally).
So it seems like you just really hate the anonymous class...?
<barmintor>I don't think I'm communicating the use case correctly
oh, it is true that I prefer not to have anonymous classes.12:08
<ajs6f>It's Java. No closures = pain and suffering for all.
JAVA HURTS!
So we hurt back.
<cbeer>ajs6f: huh. so there are URI-type properties in JCR.. but no API to add them as java.net.URI objects12:10
<barmintor>it might be premature optimization, but my understanding is that anon classes (especially ones that get passed out of a context like that) can impair GC b/c they keep a reference to the enclosing context
<ajs6f>cbeer: Really? That's crap.
<cbeer>i wonder if modeshape has a custom thing..
<ajs6f>barmintor: Seems premature to me, unless you think this is part of the ongoing permgen woes.12:11
<cbeer>yep, they do.. but they've locked it away
<ajs6f>cbeer: can you build them w/ ValueFactory?
<cbeer>ajs6f: yes, if i cast our value factory to an org.modeshape.jcr.value.ValueFactory.
i'm not going to
<ajs6f>So how to build URIs, then?
<cbeer>URI#toString12:12
<ajs6f>setProperty(name, String)?
setProperty(name, URI#toString)?
<cbeer>https://github.com/ModeShape/modeshape/blob/master/modeshape-jcr/src/main/java/org/modeshape/jcr/value/ValueFactory.java#L21912:13
create ( URI )
values don't know their property.
<ajs6f>But you said you didn't want to cast to o.m.j.v.ValueFactory?
<cbeer>oh, right. i see what you were asking.12:14
yes, setProperty(name, URI#toString)
and JCR will figure it out
when it sees the property is a URI type12:15
as far as i know, it doesn't do anything interesting once it knows it has a URI
<ajs6f>Hm. I guess it's just for introspecting on your contents.12:16
<cbeer>hm. there's a mix:mimeType in jcr12:20
<ajs6f>barmintor: This:
http://stackoverflow.com/questions/2056205/allowing-garbage-collection-of-a-class-while-an-anonymous-inner-class-instance-i
seems like what you are thinking about, right?
Kind of...
cbeer: anything we can avoid redefining we should, as far as I;m conerned.12:21
<cbeer>ajs6f: yeah, but now this suggests some jcr properties are user modifiable :/
<barmintor>ajs6f: yes, exactly
<ajs6f>cbeer: hm. right.
<cbeer>it's ok, we're not using mix:title either12:22
* travis-ci joins
[travis-ci] futures/fcrepo4#492 (master - 7571ff0 : Benjamin Armintor): The build passed.
[travis-ci] Change view : https://github.com/futures/fcrepo4/compare/9f132e0c447e...7571ff022334
[travis-ci] Build details : http://travis-ci.org/futures/fcrepo4/builds/7024988
* travis-ci leaves
<ajs6f>cbeer: Well, maybe they just bloody well are. And if you start screwing w/ your repo via JCR, take the risk.
<barmintor>ajs6f: I tried first refactoring to a static class, but then realized that is only saving you in number of classfiles
<ajs6f>barmintor: I get it.
barmintor: It wasn't about the Session being late-opened, it was about the eternally-lived object.12:23
(anon object and enclosing class)
<barmintor>well, they're not unrelated
but yeah
<cbeer>ajs6f: yeah, i was fine with that until i discovered things like UUID weren't protected
but i guess we could just blacklist some of them
<ajs6f>cbeer: YOU CAN MUTATE THE UUID!?!?!
<cbeer>ajs6f: that's why i got scared
<ajs6f>I call bullshit on JCR.
Forget it, we're going back to Lily.12:24
<barmintor>YES!!!
<ajs6f>Well, but maybe you can (mutate the UUID). We can't be holding people's trousers up for them. We can't protect them from their own fecklessness.12:25
I'm still tending towards the view that unless we can develop a clear and well-motivated type system that defines immutable and mutable categories, we'd be better off not defining them at all.12:26
Boy, Eclipse's Git integration has come a long ways since I last looked at it. It's pretty nice now.12:27
<cbeer>ajs6f: hm.. should we actually be wrapping these jcr-defined terms in our own namespace (as to not leak jcr-ness out?)12:28
<ajs6f>cbeer: Mm… good one. Well, how many _are_ there? I'm trying to think of a clean "reflective" way to do it. But it might mean maintaining long lists of explicit "imports".12:29
<cbeer>ajs6f: lots. at least 10 mixin types with a handful of properties each.12:30
<ajs6f>Urg.
Well, if we could just use the mixins we wouldn't have to wrry about the props explicitly.12:31
Still.
But maybe that's the right thing to do? People want to use Fedora, not JCR.
<cbeer>yeah :/12:33
i don't think it'll be that bad though
<ajs6f>Well, it's better than maintaining our own semantics and impls for all this stuff.12:34
I guess.
<cbeer>ok.
<ajs6f>I Hate Rebasing.12:47
<cbeer>ajs6f: i'm thinking about making Datastream and FedoraObject /not/ implicitly turning their JCR node into a fedora-like node13:12
i'm getting a little scared of that
actually, i'm not even sure we need the distinction between FedoraObject and Datastream in the kernel, do we?13:16
there's just some node that have jcr:content and some that don't.13:17
<eddies>ok, greg's confirmed for the pre-OR hackfest, so it's all on barmintor13:25
<ajs6f>cbeer: that would completely blow up the original object model. Which is not an objection, just an observation.13:26
I'm going to ride into the office.
Back online in a bit.
<barmintor>eddies: cool, as long as there's no pressure13:27
<cbeer>ajs6f: ok. i'm going to go down this road a bit
and we can figure out why i'm crazy later
* ajs6f leaves
<barmintor>Hmm. 4 point drop in test coverage13:32
Mmm… JcrPropertyStatementListener13:36
http://sonar.fcrepo.org/cloud/index/1
<cbeer>guilty.
it'll be a nightmare of mocking13:37
mocking jena, mocking jcr
<barmintor>Hmm. Well, fortunately it shows up as a hotspot now, so we can find it later13:43
<pivotal-bot>Edwin Shin added comment: "Nigel, can you add a comment that points to the commit that has this work?" https://www.pivotaltracker.com/story/show/49067437
<barmintor>I'm supposed to present on Argo tomorrow, and I don't want to, so I'm going to defer installing it for a while and write some tests. But not for JcrPropertyListener.13:46
<cbeer>on Argo?13:47
<pivotal-bot>Edwin Shin accepted "Update fixity and datastream location information for composite stores configurations" https://www.pivotaltracker.com/story/show/49057421
<cbeer>Stanford's Argo, or a different argo?
<barmintor>Stanford
<pivotal-bot>Edwin Shin accepted "Propose a straw-man relationship management API" https://www.pivotaltracker.com/story/show/49060845
Edwin Shin accepted "FedoraObject#getSize calculation is broken when your object contains other objects" https://www.pivotaltracker.com/story/show/4913728513:48
Edwin Shin accepted "Make a HTTP path-reference request return a "describe" response" https://www.pivotaltracker.com/story/show/4906487713:49
<eddies>cbeer: is the CompositeBinaryStore configured/used on futures6?13:50
<cbeer>eddies: yes.
<eddies>so the response for http://fcrepo4.fcrepo.org/fcrepo/rest/objects/cbbcaafa-2c58-49c0-be10-c0d1421994ba/12c0c863-84fd-4777-89a7-ca83a15aa54a/13:51
is returning the store the resource is actually in as per https://www.pivotaltracker.com/story/show/48835251
<pivotal-bot>feature: Update LowLevelStorageService to be CompositeBinaryStore aware (delivered) / owner: Chris Beer
<eddies>?
<cbeer>yes.13:52
<eddies>just checking
<pivotal-bot>Edwin Shin accepted "Update LowLevelStorageService to be CompositeBinaryStore aware" https://www.pivotaltracker.com/story/show/48835251
* ajs6f joins14:11
* github-ff joins14:24
[fcrepo4] cbeer pushed 1 new commit to master: http://git.io/lUSntQ
fcrepo4/master 0c0e0e6 Chris Beer: make sure the node exists before going into our streaming output.
* github-ff leaves
<bljenkins>Yippie, build fixed!14:39
Project fcrepo4 build #566: FIXED in 14 min: http://ci.projectblacklight.org/jenkins/job/fcrepo4/566/
Chris Beer: make sure the node exists before going into our streaming output.
<cbeer>ajs6f: as far as I can tell, in order to support the REST API, we can get away with just having JCR nodes (wrapped in our own construct), and some of them happen to have content associated with them14:42
* travis-ci joins14:45
[travis-ci] futures/fcrepo4#493 (master - 0c0e0e6 : Chris Beer): The build passed.
[travis-ci] Change view : https://github.com/futures/fcrepo4/compare/7571ff022334...0c0e0e697876
[travis-ci] Build details : http://travis-ci.org/futures/fcrepo4/builds/7029514
* travis-ci leaves
<bljenkins>Project fcrepo-kitchen-sink build #261: SUCCESS in 5 min 17 sec: http://ci.projectblacklight.org/jenkins/job/fcrepo-kitchen-sink/261/
<ajs6f>cbeer: so no fedora: namespace at all, is where you're going?
<cbeer>ajs6f: i'm starting to get there, yeah. i think we have a couple properties that aren't covered by jcr14:46
<ajs6f>Name 'em, so we can kill 'em.
<cbeer>fedora:digest
<ajs6f>What is that?
<cbeer>checksum.14:47
fedora:size too doesn't seem to show up in a mixin
actually, i think that's it.14:48
just the fixity stuff
<ajs6f>What 's the semantic diff between fedora:size and the result of Binary.getSize()?
<cbeer>none.14:53
fedora:size is just our way of getting it into the lucene index
<ajs6f>Well, I killed that one quick.
<cbeer>and, technically, fedora:digest is similar.. if we trust the binary keys to carry the fixity data we want14:54
<ajs6f>Would that limit us to SHA-1?14:56
<cbeer>and is kinda risky.14:57
<ajs6f>hm.
<cbeer>binary keys happen to be SHA-1
now
<ajs6f>So far we've got digest, and maybe size?
<cbeer>so, we carry over a fedora:fixity mixin
<ajs6f>I like.14:58
<cbeer>and make the rest jcr or user properties
<ajs6f>Hooray!
<cbeer>kill fedora owners and labels and all that
<ajs6f>DIE DIE DIE!
<cbeer>i'll probably do something about the profile output in this pass too
turn it into all rdf all the time
<ajs6f>"RDF all the things."— cbeer15:01
* ajs6f leaves15:03
<barmintor>cbeer: how fresh in your mind is StoreChunkInputStream?15:17
<cbeer>barmintor: fresh enough
<barmintor>were you trying to avoid skip() ever loading more than one buffer?
<cbeer>s/were you/was modeshape/15:18
<barmintor>Oh, is that taken from MODE?
<cbeer>yep, lightly tweaked.15:19
yeah, i don't know what the goal is
<barmintor>ok
I think it might be a little bugged, that method
<cbeer>https://github.com/ModeShape/modeshape/blob/master/modeshape-jcr/src/main/java/org/modeshape/jcr/value/binary/infinispan/ChunkInputStream.java15:20
<barmintor>well, when I get it fixed I guess I'll send them a PR15:21
<cbeer>i know there's a MODE ticket floating out there to keep track of how large the chunks are
so they can skip through them without reading
now that we're encroaching on their namespace, i think we could poke that through as-is too15:22
just subclass it with something public
<barmintor>well, let's fix it first :)
<cbeer>ok. are you fixing it locally or upstream?15:24
<barmintor>locally first, then upstream15:25
<cbeer>ok. won't touch it then.
<barmintor>since we have the local version already
<cbeer>jcr:content is a nt:resource, right?15:27
* github-ff joins15:28
[fcrepo4] awoods created aw-45458545 (+1 new commit): http://git.io/nW3tUw
fcrepo4/aw-45458545 6709d5d Andrew Woods: Add caching headers over FedoraDatastreams and FedoraNodes API methods....
* github-ff leaves
<bljenkins>Project fcrepo-kitchen-sink build #262: SUCCESS in 4 min 38 sec: http://ci.projectblacklight.org/jenkins/job/fcrepo-kitchen-sink/262/15:45
* ajs6f joins
<pivotal-bot>Nigel Banks added comment: "I think this is all of them" https://www.pivotaltracker.com/story/show/4906743715:51
Nigel Banks added comment: "I think this is all of them
https://github.com/Islandora/islandora/pull/326
https://github.com/Islandora/is..." https://www.pivotaltracker.com/story/show/49067437
<cbeer>it's amazing how much cruft a new project can pick up16:05
<ajs6f>Fedora 4: Cruft Velcro!16:06
<cbeer>i've found some slightly different implementations of getting the create + modify dates
well. not slightly different
totally different.
one returns a string, one returns a Date
<ajs6f>I've found that some of our JAX-RS endpoint have inner-class JAXB impls.16:07
That duplicate other JAXB impls.
<cbeer>i also wish exercising code in tests didn't "count" towards the unused code detection16:08
i wonder if there's a setting i can toggle..
<ajs6f>It does? That makes no sense. It's easy to distinguish them...
Well, easy from the Maven lifecycle view.
* ajs6f leaves16:18
<barmintor>ok, that was weirdly hard.16:21
* ajs6f joins16:23
<barmintor>and I think this class is still broken16:24
<ajs6f>What class?
<barmintor>this inputstream class we borrowed from MODE
<ajs6f>The fixity one?16:25
<barmintor>no, the cacheEntry one
<ajs6f>oh.
but that's a core class...?
<barmintor>I don't know how they use it
skip is broken16:26
<ajs6f>Maybe they happen never to use skip()?
<barmintor>and it doesn't really fulfill the contract of available, and they controvert what seems to be their own intention on buffered reads.
<ajs6f>Maybe ask on #modehsape?16:27
<barmintor>IE, available tells you how much you can read without blocking, but it loads a chunk from the cachestore
<ajs6f>Blocking while it does that?
<barmintor>yeah
if it has no buffer, it fetches one16:28
<ajs6f>Hm. So they ought to be buffering and using that to test availability?
<barmintor>which is kind of the opposite of the contract :P
<awoods>Where do we set the local value of "fcrepo.ispn.CacheDirPath", found in: infinispan_configuration.xml?16:29
<cbeer>awoods: it's just a java property16:30
<awoods>thanks
<cbeer>ah, i was wondering why i was running out of disk space.. went looking in my $TMPDIR and found hundreds of jars16:31
<ajs6f>Code jars?
<cbeer>s/hundreds/thousands/16:32
yeah. i think my IDE must not be behaving nicely
<ajs6f>Weird. Builds of our code?16:33
<cbeer>powermock stuff
<ajs6f>Ask barmintor. :)
<barmintor>powermock is bad. don't use it.16:34
;)
<awoods>Next: how about the configuration of 'PutObjectStoreDirHere/ShadowNoFileLockStore/defaultStore/'16:47
<cbeer>awoods: buried. let me find the ticket16:50
<awoods>cbeer: Thanks, as you can see, I am at the initial point of trying to get an installation up.
<cbeer>https://www.pivotaltracker.com/story/show/46142329
<pivotal-bot>chore: Remove crappy temp files that leak into the container directory (unstarted) / owner: Chris Beer
<cbeer>if you want to take that ticket.... :)
it's buried down in jgroups (dependency of a dependency (.. of a dependency?))
<awoods>I would like to get the app working first.16:51
<cbeer>then you suffer with those 3 directories stuck in your pwd
we've been happily ignoring them so far16:52
waiting for someone to get annoyed enough to crack.
<ajs6f>I thought it has something to do with JTA?
<cbeer>oh, right. sorry.
<awoods>which I guess mean PutObjectStoreDirHere will be in /var/lib/tomcat/
<cbeer>yes
along with the other directories mentioned in that ticket
<ajs6f>That's kind of unhealthy.
I feel like we looked at this and there was a MODE ticket out for the same thing.16:53
And that there's some magic Java system properties you can set to move them...
BUt I can
't remember exactly...
<awoods>It seems a bit rough to have that under /var/lib/tomcat16:54
<ajs6f>It's wrong.
<cbeer>it's all in that ticket. and now that i say that.. i wonder16:55
<awoods>dead wrong
<cbeer>nope, i never did anything on the futures* boxes16:56
ok, i'm moments away from landing a bunch of changes across everywhere16:57
<ajs6f>{sigh} And I thought I was done rebasing. Oh, well.
I'm out for the day. See 'yall later.16:58
<cbeer>if you want to beat me, that's fine
<ajs6f>cbeer: No, go ahead
<awoods>up and running
<ajs6f>Yay!
_SO_ much easier than fcrepo3.
<awoods>after a few system properties and dir creations in unpleasant places.
<ajs6f>:)
Good night, all.
* ajs6f leaves16:59
<nbanks>night
ll17:25
* nbanks leaves
<barmintor>WTF17:40
<cbeer>barmintor: still the same thing?17:41
<barmintor>cbeer: now I'm looking at the outputstream
and I don't see how it stores anything of size > CHUNK_SIZE17:42
oh, there it is
I needed to scroll further down
in MODE's code
but I think our class is missing two crucial lines of code!17:43
* barmintor writes a test17:44
<cbeer>oops. when you don't actually send your post request, you don't make the changes you think you are..18:07
@who will test the tests?
<barmintor>cbeer: you're going to crack up when you see this change go up18:11
assuming :verify ever finishes
<cbeer>20 minutes later..18:13
* github-ff joins18:14
[fcrepo4] barmintor pushed 1 new commit to master: http://git.io/ShbLEw
fcrepo4/master b566a78 Benjamin Armintor: fix some bugs in chunking I/O; add unit tests
* github-ff leaves
<cbeer>https://github.com/futures/fcrepo4/commit/b566a78af906acb2e45087ed648171504807001a#L1L10118:18
those seem kinda important.
<barmintor>:D
<cbeer>i assume i just dropped them?
<barmintor>I think you probably did *exactly* what I did18:19
b/c the line breaks in the source at MODE leave them dangling off the screen
<cbeer>!!
<barmintor>yeah
my "WTF" earlier was looking at MODE and asking "How does this actually work?" *scroll* "Oh."18:20
I think we must not have any IT that push more than 1MB, b/c my test crashed with a heap failure befire that fix18:21
<cbeer>yeah, likely story.18:22
i know MODE has a postgres manual they use for testing
<barmintor>I know it betrays my lack of commitment, but I'm kind of all for leaving it out, and just letting my unit test push the same 1kb to a mock object 1025 times :P18:24
good lord18:37
I swear, those new unit tests are fast on my desktop!
"Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 706.976 sec"18:40
something seems… amiss
<cbeer>barmintor: which test was that?18:46
<barmintor>one of the new ones18:47
<cbeer>hm. i didn't notice it slow locally
<barmintor>maybe asking for a kb of random data is a bad idea
cbeer: neither did I
<cbeer>ooh.. using rand?
<barmintor>but jenkins and travis are both crawling
<cbeer>yeah, they're probably trying to use true random data
<barmintor>ok18:48
I can put together a function to make garbage data pretty easily
<cbeer>you can also do what we did for the jmeter data...
<barmintor>what was that?
<cbeer>looking for it
* github-ff joins18:49
[fcrepo4] cbeer pushed 3 new commits to master: http://git.io/UpI7DA
fcrepo4/master a412d8f Chris Beer: start introducing a FedoraResource/NodeService that don't care if the thing is a object or datastream
fcrepo4/master 713dd2e Chris Beer: stop using our custom fedora:* properties where jcr:* properties are good enough
fcrepo4/master 2912afd Chris Beer: use the nodeService where appropriate.
* github-ff leaves
<cbeer>https://github.com/futures/ff-jmeter-madness/blob/master/plans/fedora.jmx#L422
use RandomAccessFile
seek to the size you want
write some small amount of random data
<barmintor>yeah. those two unit tests are taking almost half an hour by themselves18:50
that's crazy18:51
<cbeer>:/
low entropy.
<barmintor>hey! random crap is fast on my machine :D
<cbeer>we demand only the best in our random numbers!
hm. now i don't remember why i started this refactor.18:52
oh, right. i wanted to clear stuff out of the fedora: namespace18:53
<barmintor>Oh, hah18:54
I'm not getting 1kb of random data18:55
I'm generating a 1kb seed
whoops!
* travis-ci joins19:05
[travis-ci] futures/fcrepo4#494 (master - b566a78 : Benjamin Armintor): The build has errored.
[travis-ci] Change view : https://github.com/futures/fcrepo4/compare/0c0e0e697876...b566a78af906
[travis-ci] Build details : http://travis-ci.org/futures/fcrepo4/builds/7036010
* travis-ci leaves
<barmintor>Travis: "I'm sorry but your test run exceeded 50.0 minutes. "19:06
I'M SORRY
* github-ff joins19:11
[fcrepo4] barmintor pushed 1 new commit to master: http://git.io/-XhEsg
fcrepo4/master 85dc79e Benjamin Armintor: Use a less resource-intensive source of random data
* github-ff leaves
<barmintor>cbeer: I'm going to kill the build of your last commit, it's going to take forever19:15
(because if my tests, not your commit)
<bljenkins>Project fcrepo4 build #569: ABORTED in 17 min: http://ci.projectblacklight.org/jenkins/job/fcrepo4/569/19:16
* Chris Beer: start introducing a FedoraResource/NodeService that don't care if the thing is a object or datastream
* Chris Beer: stop using our custom fedora:* properties where jcr:* properties are good enough
* Chris Beer: use the nodeService where appropriate.
<cbeer>+1
<barmintor>Those two unit tests just executed in 0.068 seconds combined19:19
LESSON LEARNED19:20
<cbeer>hey, a 10000% performance improvement!
<barmintor>:d
* github-ff joins19:22
[fcrepo4] cbeer pushed 1 new commit to master: http://git.io/Jcgv2g
fcrepo4/master 2a81368 Chris Beer: mask the jcr namespace behind our own.
* github-ff leaves
<cbeer>probably shouldn't have done that for all the jcr things but..
phase II
<pivotal-bot>Chris Beer added "Hide the JCR namespace from our downstream consumers" https://www.pivotaltracker.com/story/show/4963169919:23
Chris Beer started "Hide the JCR namespace from our downstream consumers" https://www.pivotaltracker.com/story/show/49631699
Chris Beer finished "Hide the JCR namespace from our downstream consumers" https://www.pivotaltracker.com/story/show/49631699
Chris Beer edited "Hide the JCR namespace from our downstream consumers" https://www.pivotaltracker.com/story/show/4963169919:24
Chris Beer delivered "Hide the JCR namespace from our downstream consumers" https://www.pivotaltracker.com/story/show/49631699
<barmintor>that is a great activity stream
<pivotal-bot>Chris Beer added "Cherry pick JCR properties to expose to the world in triples" https://www.pivotaltracker.com/story/show/4963175719:25
<cbeer>i'm just that good
<pivotal-bot>Chris Beer added "Kill as many unnecessary fedora:* properties as possible" https://www.pivotaltracker.com/story/show/4963179519:26
Chris Beer started "Kill as many unnecessary fedora:* properties as possible" https://www.pivotaltracker.com/story/show/49631795
Chris Beer added comment: "We have to keep our own fixity properties, but the rest can go." https://www.pivotaltracker.com/story/show/4963179519:27
Chris Beer edited "Kill as many unnecessary fedora:* properties as possible" https://www.pivotaltracker.com/story/show/49631795
<barmintor>the world needs more web UI's for editing MODS
<pivotal-bot>Chris Beer accepted "Kill as many unnecessary fedora:* properties as possible" https://www.pivotaltracker.com/story/show/49631795
<cbeer>good. i think we're working on one.
<bljenkins>Project fcrepo4 build #570: SUCCESS in 12 min: http://ci.projectblacklight.org/jenkins/job/fcrepo4/570/19:28
armintor: Use a less resource-intensive source of random data
<barmintor>yes, 12 mins is better than 50. Goodbye!19:29
* github-ff joins
[fcrepo4] cbeer pushed 1 new commit to master: http://git.io/-TUU6w
fcrepo4/master cca4518 Chris Beer: not sure why the CND is duplicated here.. but make it consistent with the fcrepo-kernel version
* github-ff leaves
<pivotal-bot>Chris Beer added "Why are there two fedora-node-types.cnd files??" https://www.pivotaltracker.com/story/show/49631911
* travis-ci joins19:39
[travis-ci] futures/fcrepo4#495 (master - 2912afd : Chris Beer): The build has errored.
[travis-ci] Change view : https://github.com/futures/fcrepo4/compare/b566a78af906...2912afd406ca
[travis-ci] Build details : http://travis-ci.org/futures/fcrepo4/builds/7036786
* travis-ci leaves
* travis-ci joins19:42
[travis-ci] futures/fcrepo4#496 (master - 85dc79e : Benjamin Armintor): The build passed.
[travis-ci] Change view : https://github.com/futures/fcrepo4/compare/2912afd406ca...85dc79ee8585
[travis-ci] Build details : http://travis-ci.org/futures/fcrepo4/builds/7037237
* travis-ci leaves
* bljenkins leaves19:54
* bljenkins joins19:57
Project fcrepo-kitchen-sink build #263: SUCCESS in 4 min 19 sec: http://ci.projectblacklight.org/jenkins/job/fcrepo-kitchen-sink/263/20:06
* travis-ci joins20:13
[travis-ci] futures/fcrepo4#497 (master - 2a81368 : Chris Beer): The build has errored.
[travis-ci] Change view : https://github.com/futures/fcrepo4/compare/85dc79ee8585...2a81368364e6
[travis-ci] Build details : http://travis-ci.org/futures/fcrepo4/builds/7037485
* travis-ci leaves
* travis-ci joins20:15
[travis-ci] futures/fcrepo4#498 (master - cca4518 : Chris Beer): The build passed.
[travis-ci] Change view : https://github.com/futures/fcrepo4/compare/2a81368364e6...cca4518de106
[travis-ci] Build details : http://travis-ci.org/futures/fcrepo4/builds/7037656
* travis-ci leaves
* github-ff joins20:30
[fcrepo4] awoods pushed 2 new commits to aw-45458545: http://git.io/p4v3UA
fcrepo4/aw-45458545 0283592 Andrew Woods: Merge remote-tracking branch 'origin/master' into aw-45458545...
fcrepo4/aw-45458545 ebfd83d Andrew Woods: Merge remote-tracking branch 'origin/master' into aw-45458545
* github-ff leaves
* github-ff joins20:33
[fcrepo4] awoods opened pull request #57: Resolution of: Add HTTP 1.1-friendly cache headers to our REST API responses (master...aw-45458545) http://git.io/4bOTEA
* github-ff leaves
<bljenkins>Project fcrepo-kitchen-sink build #264: SUCCESS in 5 min 13 sec: http://ci.projectblacklight.org/jenkins/job/fcrepo-kitchen-sink/264/20:49
* github-ff joins20:55
[fcrepo4] cbeer pushed 1 new commit to master: http://git.io/0_fH_g
fcrepo4/master 623a1f7 Chris Beer: serialize jcr properties using the correct rdf types.
* github-ff leaves
<pivotal-bot>Chris Beer added "Merge digestAlgorithm and digest JCR properties into a single URI type" https://www.pivotaltracker.com/story/show/4963572721:13
* travis-ci joins21:16
[travis-ci] futures/fcrepo4#500 (master - 623a1f7 : Chris Beer): The build passed.
[travis-ci] Change view : https://github.com/futures/fcrepo4/compare/cca4518de106...623a1f7bd9d4
[travis-ci] Build details : http://travis-ci.org/futures/fcrepo4/builds/7039387
* travis-ci leaves
<bljenkins>Project fcrepo-kitchen-sink build #265: SUCCESS in 5 min 56 sec: http://ci.projectblacklight.org/jenkins/job/fcrepo-kitchen-sink/265/21:19
<pivotal-bot>Andrew Woods finished "Add HTTP 1.1-friendly cache headers to our REST API responses" https://www.pivotaltracker.com/story/show/4545854521:25