Really nice stuff! On 11 Apr 2011, at 13:13, Galder Zamarreño wrote: > Hey Olaf, > > First of all, thanks for work put so far on this! > > Pity you could not make it last week to Berlin Expert Days. I would have been > great to sit down and go through this code together :| - hope you're doing > better health wise :) > > Here are my thoughts so far: > > - First of all, since you have made several commits, it'd be nice for the > rest of audience to highlight what the changes are at a high level so that > people can focus on the code immediately. +1. Also if you can issue a pull request it would be easier for to centralise or comments. > > - I actually like some aspects of writeObject(key, InputStream) API cos it > does the reading for the user and that can be done directly in the desired > chunk size to pass it around and this is done internally, so the user has to > write less code. On the other side, if we had a 'OutputStream writeToKey(K > key);' the user has the freedom to decide how to read from an external stream > and write to the outpustream but then we'd probably have to chunk it again to > send it around the cluster cos the chunks in which the outputstream is > written are not necessarily the chunks we'll write to the cluster. The only > major problem I see with writeObject(key, InputStream) is if the reading the > input stream blocks. So, imagine that the input stream is slow, i.e. a remote > cloud provider. Then the client code is blocked and can't do anything and > this is not good, so if we go with writeObject(key, InputStream), it needs to > throw InterruptedException. On the other hand, the suggested code in > http://community.jboss.org/wiki/LargeObjectSupport allows for the client to > tweak how the input stream is read to avoid blocking, i.e. have some kind of > NIO way of reading the stream. > > - Rather than modifying PutKeyValueCommand, it might be better to subclass it > and add the large object logic there? i.e. PutLargeKeyValueCommand - I'd also > suggest adding a new build* method in the command factory...etc. This keeps > the code more fine grained. If that's the approach to be used, you can subclass directly fro AbstractDataWriteCommand which is PutKeyValueCommand's parent. That way you can have a strongly typed value as well, of type InputStream. > > > - I don't think it's a good idea to have KeyGenerator<K> generalized. It's > just complicates the code. Simply have an Object as key and it would simplify > the code. Besides, you have hardcoded Chunk to a String type of chunk key and > that's probably not right cos it depends on the key generator. > > - Internally we don't use K of the Cache interface, we simply stick to Object > to simplify the code. Externally, in the Cache interface we do keep generics > but we don't use them internally. So you can remove K from > LargeObjectMetadata and Chunks. +1 > > Cheers, > > On Apr 10, 2011, at 10:07 PM, Olaf Bergner wrote: > >> I have the skeleton of an implementation of ISPN-78 - Large Object >> Support - at https://github.com/obergner/infinispan/tree/t_ispn78. >> Before going forward I could need some feedback on whether my approach >> makes sense at all, what alternatives there are, where things might be >> improved or modified to adhere to INFINISPAN's standards and so forth. >> Any hint is highly appreciated. >> >> Keep in mind that so far I have completely ignored the issue of >> supporting transactions when reading and writing large objects. I would >> prefer to have a working core implementation before tackling the more >> complicated aspects. >> >> Cheers, >> Olaf >> _______________________________________________ >> infinispan-dev mailing list >> infinispan-dev@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/infinispan-dev > > -- > Galder Zamarreño > Sr. Software Engineer > Infinispan, JBoss Cache > > > _______________________________________________ > infinispan-dev mailing list > infinispan-dev@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/infinispan-dev
_______________________________________________ infinispan-dev mailing list infinispan-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/infinispan-dev