Just an update: the prototype I worked on to add a 'datatype' metadata 
parameter to the script seems to be working, so I'll be sending a PR for 
inclusion in 8.2.

Cheers,
--
Galder Zamarreño
Infinispan, Red Hat

> On 29 Feb 2016, at 19:46, Galder Zamarreño <gal...@redhat.com> wrote:
> 
> Hi all,
> 
> I had a chat earlier with Tristan and he pointed me to the metadata 
> information that can be passed in script header.
> 
> Given that so far (until compatibility is supported), Javascript client only 
> supports String key/values, a very simple solution to this problem would be 
> to define a new metadata parameter, e.g. data-type, which can optionally 
> define the type of key, value, parameters and returned object. E.g. in the 
> javascript client case, I could just say: data-type=utf8 in the header of the 
> script, and that would provide enough hints for the server to do its job by 
> interpreting byte arrays dealt with in exec command as UTF-8 strings.
> 
> This method is much more user friendly than having user plug a marshaller 
> since it only requires a small change in the header of the script, as opposed 
> to having to change server side configuration. I'm working on a prototype for 
> this with hopes to include in 8.2.
> 
> Cheers,
> --
> Galder Zamarreño
> Infinispan, Red Hat
> 
>> On 29 Feb 2016, at 14:35, Vittorio Rigamonti <vriga...@redhat.com> wrote:
>> 
>> Hi All, Hi Galder
>> 
>> JBasicMarshaller.h is not an intent to go further along the way to implement 
>> a c++ JBossMarshaller, it has the only goal to provide a working 'exec' 
>> operation.
>> The c++ exec currently works only with integer and "small" string data 
>> types, user can easily extends the marshaller to other basic types.
>> 
>> My current model of the exec use case is this one (maybe it's too simplistic 
>> so correct me if I'm wrong): a "user defined consumer" consumes data 
>> produced by a "user defined producer", so maybe it could worth to evaluate a 
>> solution where the framework provides a common standard for communication 
>> (stringified json? or JSObject for in memory 100% Java) and let the user 
>> handle it's own data.
>> This is a proposal approach specific to the exec scope, I can't say if it 
>> can be extended as a general approach where marshalling is involved.
>> 
>> Cheers,
>> Vittorio
>> 
>> 
>> 
>> 
>> ----- Original Message -----
>> From: "Galder Zamarreño" <gal...@redhat.com>
>> To: "infinispan -Dev List" <infinispan-dev@lists.jboss.org>
>> Sent: Monday, February 29, 2016 11:28:55 AM
>> Subject: [infinispan-dev] HotRod exec operation tight coupling with JBoss    
>> Marshaller
>> 
>> Hi all,
>> 
>> While implement `exec` operation for the JS client, I've encountered an 
>> issue with how the exec parameters and return types are marshalled. 
>> 
>> The essence of the problem is that the server marshalls these objects 
>> instead of having the client drive how these are marshalled. As a result of 
>> this, for a JS or C++ client to be able to use `exec` with default 
>> configuration, they need to understand JBoss Marshaller format, which is not 
>> good.
>> 
>> I'm not sure this would have been unavoidable due to the characteristics of 
>> `exec` but I wanted to see if we can find a good way to solve or get around 
>> this issue. Long term, we need better encoding handling both for incoming 
>> and returning types, but the question is whether we can find a way to better 
>> solve this until then. Here are some options:
>> 
>> - For the C++ client, Vittorio has part implemented the JBoss Marshaller 
>> format [1], but I'm kinda reluctant to go down this path since that creates 
>> a lot of work for us as the number of types that can be discovered in a 
>> JBoss Marshaller format byte array are quite considerable [2]. We're bound 
>> to miss one of those and since clients could execute any script, the chances 
>> are high IMO...
>> 
>> - An alternative would be for the JS/C++ clients to only support exec when 
>> the marshaller is one that enables compatibility mode. The idea here is that 
>> for compatibility mode to work, all clients involved are going to be set up 
>> with a marshaller that can work for all of them. Working on such marshaller 
>> is time better spent than on implementing the JBoss Marshaller format. We 
>> had a separate discussion on this topic in another dev thread...
>> 
>> Any other ideas someone might have?
>> 
>> Cheers,
>> 
>> [1] 
>> https://github.com/infinispan/cpp-client/blob/master/include/infinispan/hotrod/JBasicMarshaller.h
>> [2] 
>> https://github.com/jboss-remoting/jboss-marshalling/blob/master/river/src/main/java/org/jboss/marshalling/river/Protocol.java
>> --
>> Galder Zamarreño
>> Infinispan, Red Hat
>> 
>> 
>> _______________________________________________
>> 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
> 
> 
> _______________________________________________
> 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

Reply via email to