[Seaside] Questions about double (or more) request
Miguel Enrique Cobá Martinez
miguel.coba at gmail.com
Wed Aug 5 19:51:17 UTC 2009
El mié, 05-08-2009 a las 18:45 -0100, Mariano Martinez Peck escribió:
> Thanks to all. Now I get it. But...I still wonder how can I manage
> double request.
>
> c) how can I handle the famous double commit? suppose now self
> increase does something in a relational database (like persisting an
> order or something like that) and I don't want it to get persisted
> twice or I don't want an error because of duplicated PK
>
check the isolate: message of seaside (I think that it is from
WAComponent) for processing a request just one time. I think it can help
you
Miguel Cobá
> thanks for the help!
>
> mariano
>
> On Wed, Aug 5, 2009 at 6:11 PM, Diogenes Alberto Moreira
> <diogenes.moreira at gmail.com> wrote:
> The point is that, for every click you do, seaside run a
> continuation
> it is identified by the _s _f and a number.
>
> At this point when you assign a block to call back the block
> is
> leads to the context, where count is a value x, eg 20
>
> if you run 70 times the same continuation, count value will
> be the same 21 (20 +1).
>
> because that, Transcript show increase, increase, increase,
> renderContentOn and the count value is the same 21.
>
> because that, fixtemp is very important in squeak, and Pharo
> have better behavior.
>
> wich click is running all... but al run the same block
>
> regard (sorry for my google english).
>
> El 05/08/2009, a las 15:54, Diogenes Alberto Moreira escribió:
>
>
>
> Bueno te lo contesto en castellano y despues trato de
> traducirlo. en otro mail (sorry for english speakers,
> my English is horrible)
>
> El punto es este, por cada click que haces se ejecuta
> un continuation que esta identificado por el _s para
> la session _k para el componete un numero de &.
> en punto que cuando vos le asignas un bloque al call
> back el bloque se lleva el contexto, donde count tiene
> un valor x, por ejemplo 20
>
> por mas que ejecutes 70 veces, en el contexto del
> bloque count vale 20 e incease ejecuta count := 20 +
> 1.
>
> por eso en el transcript, te aperece increase,
> incease, rendercontentOn y el valor que toma count es
> simpre 21. (para nuestro ejemplo). y por eso lo
> importante del fixtemp en squeak y la mejora que
> significo Pharo.
>
> cual se ejecuta,,, todos.... pero todos hacen lo
> mismo...
>
> Espero ser claro....
>
> PD: mariano ponele onda y traducilo.
>
> Saludos
>
> El 05/08/2009, a las 15:40, Mariano Martinez Peck
> escribió:
>
> Hi! I am trying to understand how seaside
> handle double or more, request. I started with
> the simpler example: WACounter, which has:
>
> renderContentOn: html
> Transcript show: 'renderContentOn'; cr.
> html heading: count.
> html anchor
> callback: [ self increase ];
> with: '++'.
> html space.
> html anchor
> callback: [ self decrease ];
> with: '--'
>
>
> increase
> Transcript show: 'increase'; cr.
> count := count + 1.
> (Delay forSeconds: 3) wait.
>
>
> Now, suppose the counter is in 0. I click one
> time on '++' and wait and I see in the
> transcipt:
>
> increase
> renderContentOn
>
> Ok, perfect. New session, 0 again. Now I click
> on '++' but before it finish, I click 3 times
> more (very quickly). I can see this in the
> transcipt:
>
> increase
> increase
> increase
> increase
> renderContentOn
>
> So, as I can see:
>
> 1) the callback (self increase in this case)
> is called for every click.
> 2) the renderContentOn isn't call until all of
> the self increase of that session finish.
> 3) when renderContentOn is called, the
> webpage shows the number 1 (which is correct
> instead of 4).
>
> Now the questions are:
>
> a) how does seaside can do that? every request
> has its own variables? I think this has to be
> with continuations but I want to be sure.
> b) which of all of the self increase is the
> one that is finally rendered? the first one?
> c) how can I handle the famous double commit?
> suppose now self increase does something in a
> relational database (like persisting an order
> or something like that) and I don't want it to
> get persisted twice or I don't want an error
> because of duplicated PK.
>
> Thanks for the help. I just want to understand
> how this is handle!
>
> best,
>
> Mariano
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
>
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
>
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
More information about the seaside
mailing list