Claus,

cool thanx :)

regards, Achim

2011/11/15 Claus Ibsen <claus.ib...@gmail.com>

> On Tue, Nov 15, 2011 at 11:05 AM, Claus Ibsen <claus.ib...@gmail.com>
> wrote:
> > On Tue, Nov 15, 2011 at 11:02 AM, Achim Nierbeck
> > <bcanh...@googlemail.com> wrote:
> >> Hi Clause,
> >>
> >> even though I'm fully with you that this sounds reasonable I would like
> to
> >> see this
> >> feature/improvement optional or at least being able to be disabled since
> >> right now
> >> I'm actually using this feature of a complete rollback of all changes
> done,
> >> because one of the
> >> incoming messages is "corrupt" :)
> >>
> >
> > Yeah we could add an option to control this. And then in your case,
> > you can enable this option.
> > I wonder what a good option name would be?
>
> There is now a consumer.transacted option you can use to control this.
> https://issues.apache.org/jira/browse/CAMEL-4683
>
> Achim in your case, you can set that option to true, to have the
> behavior you asked about.
> The default is false, to commit all the previous good messages.
>
>
>
> >
> >
> >> Regards, Achim
> >>
> >> 2011/11/15 Claus Ibsen <claus.ib...@gmail.com>
> >>
> >>> Hi
> >>>
> >>> The JPA consumer is a bit special as its consuming messages from a
> >>> database, as they were from a JMS queue.
> >>> So its basically a queue based solution on a database table.
> >>>
> >>> So I frankly think we should alter the concept of transaction, as IMHO
> >>> it does not make sense to consume X number of rows from a datase table
> >>> and have them all act in the same transaction. The reason is the JPA
> >>> consumer is scheduled based, and will pick up X rows which is
> >>> currently in the table. (basically a SELECT * form MY_TABLE).
> >>>
> >>> I think the behavior should be changed to
> >>> - on first exception, commit the previous good messages
> >>> - break out, and log a WARN that the current message could not be
> processed
> >>>
> >>> Then upon next poll from the JPA consumer, all the previous good
> >>> messages was committed, and it will only pickup the previous bad row
> >>> (+ any additional new rows).
> >>>
> >>>
> >>> With the current behavior you can end up with a situation like
> >>> 1) There is 100 rows in the table
> >>> 2) JPA consumer pickup a ResultSet with 100 rows. And will process
> >>> each row one by one.
> >>> 3) Now after processing 69 messages, number 70th fails.
> >>> 4) All 100 rows will rollback
> >>> 5) JPA consumer is scheduled again, and pickup yet again a ResultSet
> >>> with 100 rows. And will process each row one by one.
> >>> 6) Now after processing 69 messages (the same 69 messages from
> >>> previous poll), number 70th fails yet again.
> >>> 7) All 100 rows will rollback
> >>> ... and it will repeat itself.
> >>>
> >>> What I propose is to change the behavior to (which you could argue the
> >>> old situation was, albeit there was a bug, causing to commit
> >>> regardless what, and not break out if there was an unhandled
> >>> exception)
> >>> 1) There is 100 rows in the table
> >>> 2) JPA consumer pickup a ResultSet with 100 rows. And will process
> >>> each row one by one.
> >>> 3) Now after processing 69 messages, number 70th fails.
> >>> 4) The 69 good rows will commit
> >>> 5) A WARN is logged about the failure of processing the 70th message
> >>> 6) JPA consumer is scheduled again, and pickup a new ResultSet with 41
> >>> rows. And will process each row one by one.
> >>> 7) Now processing the 1st message fails, because on last poll that
> >>> message failed as well
> >>> 8) There is no good messages to commit
> >>> 9) A WARN is logged about the failure of processing the 1th message
> >>> ... and it will repeat itself.
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> --
> >>> Claus Ibsen
> >>> -----------------
> >>> FuseSource
> >>> Email: cib...@fusesource.com
> >>> Web: http://fusesource.com
> >>> Twitter: davsclaus, fusenews
> >>> Blog: http://davsclaus.blogspot.com/
> >>> Author of Camel in Action: http://www.manning.com/ibsen/
> >>>
> >>
> >>
> >>
> >> --
> >> *Achim Nierbeck*
> >>
> >> Apache Karaf <http://karaf.apache.org/> Committer & PMC
> >> OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/>
> Committer &
> >> Project Lead
> >> blog <http://notizblog.nierbeck.de/>
> >>
> >
> >
> >
> > --
> > Claus Ibsen
> > -----------------
> > FuseSource
> > Email: cib...@fusesource.com
> > Web: http://fusesource.com
> > Twitter: davsclaus, fusenews
> > Blog: http://davsclaus.blogspot.com/
> > Author of Camel in Action: http://www.manning.com/ibsen/
> >
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: cib...@fusesource.com
> Web: http://fusesource.com
> Twitter: davsclaus, fusenews
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/
>



-- 
*Achim Nierbeck*

Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer &
Project Lead
blog <http://notizblog.nierbeck.de/>

Reply via email to