[Opa] Dom.put_inside error?

François-Régis Sinot francois-regis.sinot at mlstate.com
Thu Aug 18 03:45:01 EDT 2011


Summary of private discussions on the topic:

* the bug was due to a function in Opa mistakenly defined only
server-side, which was causing a big part of Mads' code to execute
server-side, leading to tentative (and failing) serialization of values
of dom type

* the bug is fixed on Opa, and a work-around has been provided (namely
to use another function)

* on the methodology side, to work-around or reveal bugs related to
wrong serialization or excessive client-server communication, it is
often useful to play with directives @client/@server (to be placed
before top-level definitions or top-level module fields definitions).

Cheers,
François-Régis.

Le mercredi 17 août 2011 à 14:08 +0200, Mads Jensen a écrit :
> It was Safari both times :) I'll look into the code to see if I can
> figure it out.
> 
> 2011/8/17 François-Régis Sinot <francois-regis.sinot at mlstate.com>
>         Hi,
>         
>         I'd say it's *exactly* the same problem, except that you
>         tested here
>         with Firefox instead of Chrome. Do you confirm ?
>         
>         Cheers,
>         François-Régis.
>         
>         Le mercredi 17 août 2011 à 12:00 +0200, Mads Hartmann Jensen a
>         écrit :
>         
>         > Hi,
>         >
>         > Thanks for the detailed feedback. As my goal is to submit
>         the application I'm working
>         > on to the developer competition it's probably best I use the
>         work-around for now ;)
>         >
>         > I'm getting another error in another piece of code:
>         >
>         > Error: File "stdlib/core/rpc/core/opaserialize.opa", line
>         340, characters 8-47, (340:8-340:47 | 11685-11724) @fail:
>         OpaSerialize.partial_serialize
>         >
>         > Do you reckon it's the same kind of problem I'm having?
>         Unfortunately I can't seem to reproduce
>         > the error in a simple example so if you want to have a look
>         at it I would have to send you
>         > my entire application (it's not that big).
>         >
>         > Cheers,
>         > Mads
>         >
>         > On Aug 17, 2011, at 11:53 AM, François-Régis Sinot wrote:
>         >
>         > > Hello Mads,
>         > >
>         > > This is not really a bug, but more a limitation of the
>         current version
>         > > of Opa. At the moment, the only entry points between
>         server and client
>         > > (both ways) are top-level functions. So in your example,
>         page is
>         > > executed on the server, so Dom.of_xhtml is executed on the
>         server, which
>         > > results in an abstract type that we cannot send to the
>         client.
>         > >
>         > > We are working at the moment on a new version of Opa where
>         this
>         > > limitation is lifted, but this is really a big rewrite
>         with lots of
>         > > consequences, so don't hold your breath for it (expected
>         delivery date
>         > > in experimental stage: mid-september).
>         > >
>         > > In the meantime, while Adam's work-around is perfectly
>         sensible and
>         > > works well in many cases, I can suggest another one for
>         your specific
>         > > case. Instead of the Dom.put_inside line, write:
>         > >  _ = Dom.transform([#test <- <>Clicked!</>])
>         > >
>         > > What happens here is that there is some kind of mini-DSL
>         for Dom
>         > > transformations that allows the execution of the
>         Dom.of_xhtml to be
>         > > delayed until on the client. This DSL is limited and not
>         very cleanly
>         > > integrated at the moment, but it does the job !
>         > >
>         > > Hope this helps !
>         > >
>         > > François-Régis.
>         > >
>         > > Le mardi 16 août 2011 à 15:25 +0200, Mads Hartmann Jensen
>         a écrit :
>         > >> Hi Adam,
>         > >>
>         > >>
>         > >> Thanks! :) I'll se if that solves my problem temporarily
>         till the fix
>         > >> gets released. Good luck with the bug :)
>         > >>
>         > >>
>         > >> /Mads
>         > >>
>         > >> On Aug 16, 2011, at 3:13 PM, Adam Koprowski wrote:
>         > >>
>         > >>>
>         > >>>  Dear Mads,
>         > >>>
>         > >>>
>         > >>>  Indeed, looks like a bug. Thanks for the report -- I'll
>         pass it
>         > >>> along to our team and we'll get back to you once it's
>         fixed.
>         > >>>
>         > >>>
>         > >>>  Temporary workaround: Put the when_ready function at
>         top-level
>         > >>> (you can also mark it with @client directive for good
>         measure, as
>         > >>> the error is due to serialization of some data before
>         passing it
>         > >>> back to the server in case the when_ready function is on
>         the
>         > >>> server).
>         > >>>
>         > >>>
>         > >>>  Best,
>         > >>>  Adam
>         > >>>
>         > >>> On Tue, Aug 16, 2011 at 14:23, Mads Hartmann Jensen
>         > >>> <mads379 at gmail.com> wrote:
>         > >>>        Hi Adam,
>         > >>>        Your example does indeed work. Here's an example
>         that
>         > >>>        doesn't work :)
>         > >>>
>         > >>> --
>         > >>> Adam Koprowski  [http://adam-koprowski.net]
>         > >>> R&D @ MLstate   [http://opalang.org |
>         http://mlstate.com]
>         > >>>
>         > >>
>         > >> _______________________________________________
>         > >> Opa mailing list
>         > >> Opa at lists.owasp.org
>         > >> https://lists.owasp.org/mailman/listinfo/opa
>         > >
>         > > --
>         > > François-Régis Sinot
>         > > R&D @ MLstate
>         > > 104 rue du Faubourg Saint-Antoine, 75012 Paris, France
>         > >
>         >
>         > _______________________________________________
>         > Opa mailing list
>         > Opa at lists.owasp.org
>         > https://lists.owasp.org/mailman/listinfo/opa
>         
>         --
>         François-Régis Sinot
>         R&D @ MLstate
>         104 rue du Faubourg Saint-Antoine, 75012 Paris, France
>         
>         
> 
> _______________________________________________
> Opa mailing list
> Opa at lists.owasp.org
> https://lists.owasp.org/mailman/listinfo/opa

-- 
François-Régis Sinot
R&D @ MLstate
104 rue du Faubourg Saint-Antoine, 75012 Paris, France



More information about the Opa mailing list