Igor,

Make sense. I've fixed the implementation according to your proposal.

ср, 21 авг. 2019 г. в 17:59, Igor Sapego <isap...@apache.org>:

> Probably, we need separate configuration for
> Thin Clients as a part of ClientConnectorConfiguration?
>
> Best Regards,
> Igor
>
>
> On Thu, Aug 15, 2019 at 12:36 PM Alex Plehanov <plehanov.a...@gmail.com>
> wrote:
>
> > Hi Pavel,
> >
> > Thank you for the review!
> >
> > Igniters,
> >
> > Also, I want to bring here a discussion about configuring limit for
> active
> > transactions per thin client connection.
> >
> > I see two ways to configure such limit:
> > 1. A new system property
> > 2. A new ClientConnectorConfiguration class property.
> >
> > In the current implementation, I've introduced a new system
> > property IGNITE_THIN_MAX_ACTIVE_TX_PER_CONNECTION. Pavel proposes to
> > configure limit via ClientConnectorConfiguration.
> >
> > Such limit is only reliable to thin clients, but
> > ClientConnectorConfiguration is also used for JDBC and ODBC connections
> as
> > well. A new property in ClientConnectorConfiguration will be useless for
> > JDBC and ODBC (since they use one transaction per connection) and may be
> > confusing.
> >
> > Which way is better, WDYT?
> >
> >
> >
> > чт, 15 авг. 2019 г. в 11:46, Pavel Tupitsyn <ptupit...@apache.org>:
> >
> > > Hi Alex,
> > >
> > > I've checked the patch, protocol changes look good to me. See reply in
> > > Jira.
> > > But we certainly need more eyes on this.
> > >
> > > On Thu, Aug 15, 2019 at 10:36 AM Alex Plehanov <
> plehanov.a...@gmail.com>
> > > wrote:
> > >
> > > > Hi Ivan,
> > > >
> > > > Java thin client doesn't support affinity awareness yet (ticket [1]
> is
> > in
> > > > progress now), but changes to correctly work with protocol version
> > 1.4.0
> > > > was made, so java thin client will work properly with 1.4.0 and 1.5.0
> > > > protocol versions.
> > > >
> > > > [1]: https://issues.apache.org/jira/browse/IGNITE-11898
> > > >
> > > > чт, 15 авг. 2019 г. в 10:23, Павлухин Иван <vololo...@gmail.com>:
> > > >
> > > > > Hi Alex,
> > > > >
> > > > > Could you please elaborate about thin client protocol versioning.
> As
> > I
> > > > > see 1.5.0 is supposed to be a version supporting transactions. And
> we
> > > > > already have a version 1.4.0 with affinity awareness support. I
> > > > > forgot, does Java thin client support affinity awareness? Will it
> > work
> > > > > properly if it does not?
> > > > >
> > > > > ср, 14 авг. 2019 г. в 13:59, Alex Plehanov <
> plehanov.a...@gmail.com
> > >:
> > > > > >
> > > > > > Hi Igniters,
> > > > > >
> > > > > > Finally, all dependent tickets are resolved and I've completed
> the
> > > > > > implementation of thin client transactions support. The patch [1]
> > > > > includes
> > > > > > server-side implementation and java thin client-side
> > implementation.
> > > > > > Changes to thin client protocol and top-level view of
> > implementation
> > > > also
> > > > > > described in IEP [2].
> > > > > > Can anyone review the patch?
> > > > > >
> > > > > > [1]: https://issues.apache.org/jira/browse/IGNITE-9410
> > > > > > [2]:
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-34+Thin+client%3A+transactions+support
> > > > > >
> > > > > > пн, 27 мая 2019 г. в 13:27, Alex Plehanov <
> plehanov.a...@gmail.com
> > >:
> > > > > >
> > > > > > > Ivan,
> > > > > > >
> > > > > > > Yes, .NET client has such capability. Pavel Tupitsyn already
> > > mentions
> > > > > it
> > > > > > > in this thread. As far as I understand, in .NET client
> > > implementation
> > > > > to
> > > > > > > dispatch responses dedicated thread is used.
> > > > > > > In a draft implementation of IGNITE-11685 I've used another
> > > approach:
> > > > > each
> > > > > > > request thread can read a response (if lock is acquired by this
> > > > thread
> > > > > > > successfully) and complete a future of its own request or
> another
> > > > > threads
> > > > > > > request.
> > > > > > >
> > > > > > > пн, 27 мая 2019 г. в 13:01, Павлухин Иван <vololo...@gmail.com
> >:
> > > > > > >
> > > > > > >> Alex,
> > > > > > >>
> > > > > > >> I am quite curious about async implementations from other
> > clients.
> > > > Is
> > > > > > >> there any design document describing such implementations?
> Does
> > > .NET
> > > > > > >> client have such capability?
> > > > > > >>
> > > > > > >> Actually, I forgot to finish my previous message. One of my
> > > concerns
> > > > > > >> is that a concurrent response dispatch does not sound as a
> > trivial
> > > > > > >> thing. So, I would like to understand if we already have a
> good
> > > > > > >> approach for that. If not then I suppose it worth a
> discussion.
> > > > > > >>
> > > > > > >> пн, 27 мая 2019 г. в 12:51, Alex Plehanov <
> > > plehanov.a...@gmail.com
> > > > >:
> > > > > > >> >
> > > > > > >> > Hi Ivan.
> > > > > > >> >
> > > > > > >> > Thin client transactions support is not only for java thin
> > > client.
> > > > > There
> > > > > > >> > are other clients, some of them already work in async mode.
> > > > > > >> > Ticket IGNITE-11685 already has draft implementation too,
> but
> > > now
> > > > > it's
> > > > > > >> > based on some changes to java thin client which were made by
> > > > > > >> "transaction
> > > > > > >> > support" implementation. I think this ticket will be ready
> in
> > a
> > > > > couple
> > > > > > >> of
> > > > > > >> > days after "transaction support" will be merged. And both
> > > patches
> > > > > will
> > > > > > >> be
> > > > > > >> > included in the same release.
> > > > > > >> >
> > > > > > >> > пн, 27 мая 2019 г. в 11:57, Павлухин Иван <
> > vololo...@gmail.com
> > > >:
> > > > > > >> >
> > > > > > >> > > Hi Alex,
> > > > > > >> > >
> > > > > > >> > > Regarding a problem with possible deadlock when two
> > concurrent
> > > > > > >> > > transactions from the same client are trying to lock the
> > same
> > > > key
> > > > > and
> > > > > > >> > > an issue [1]. It seems to me that without fixing the issue
> > > [1] a
> > > > > > >> > > client transactions feature is not practical. Everyone who
> > > uses
> > > > a
> > > > > > >> > > client from multiple threads can face a deadlock which is
> > > > > impossible
> > > > > > >> > > to deal with. Or am I missing something here?
> > > > > > >> > >
> > > > > > >> > > One workaround I can imagine is failing a transactions
> > > execution
> > > > > from
> > > > > > >> > > concurrent threads for a first time.
> > > > > > >> > >
> > > > > > >> > > [1] https://issues.apache.org/jira/browse/IGNITE-11685
> > > > > > >> > >
> > > > > > >> > > вт, 21 мая 2019 г. в 19:05, Alex Plehanov <
> > > > > plehanov.a...@gmail.com>:
> > > > > > >> > > >
> > > > > > >> > > > Guys,
> > > > > > >> > > >
> > > > > > >> > > > I've updated the IEP [1]. Please have a look.
> > > > > > >> > > >
> > > > > > >> > > > [1]
> > > > > > >> > > >
> > > > > > >> > >
> > > > > > >>
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-34+Thin+client%3A+transactions+support
> > > > > > >> > > >
> > > > > > >> > > >
> > > > > > >> > > > вт, 21 мая 2019 г., 14:19 Alex Plehanov <
> > > > > plehanov.a...@gmail.com>:
> > > > > > >> > > >
> > > > > > >> > > > > Ivan,
> > > > > > >> > > > >
> > > > > > >> > > > > Yes, I have plans to do that (at least for java thin
> > > > client).
> > > > > > >> Something
> > > > > > >> > > > > like new class "ClientTransactionConfiguration" inside
> > > > > > >> > > > > "ClientConfiguration".
> > > > > > >> > > > >
> > > > > > >> > > > > вт, 21 мая 2019 г. в 13:37, Павлухин Иван <
> > > > > vololo...@gmail.com>:
> > > > > > >> > > > >
> > > > > > >> > > > >> Alex,
> > > > > > >> > > > >>
> > > > > > >> > > > >> Are you going to introduce settings specifying
> default
> > > > values
> > > > > > >> for tx
> > > > > > >> > > > >> concurrency and isolation in client configuration?
> > > > > > >> > > > >>
> > > > > > >> > > > >> пн, 20 мая 2019 г. в 19:34, Alex Plehanov <
> > > > > > >> plehanov.a...@gmail.com>:
> > > > > > >> > > > >> >
> > > > > > >> > > > >> > Igor,
> > > > > > >> > > > >> >
> > > > > > >> > > > >> > Perhaps we don't really need to use server's
> default
> > > > values
> > > > > > >> for tx
> > > > > > >> > > > >> > parameters. It's a minor fix and can be easily
> > > > implemented
> > > > > if
> > > > > > >> it
> > > > > > >> > > will be
> > > > > > >> > > > >> > required in the future.
> > > > > > >> > > > >> > I will update IEP tomorrow regarding point 1 and
> > point
> > > 3.
> > > > > > >> > > > >> > Thanks for your feedback.
> > > > > > >> > > > >> >
> > > > > > >> > > > >> > пн, 20 мая 2019 г. в 15:24, Igor Sapego <
> > > > > isap...@apache.org>:
> > > > > > >> > > > >> >
> > > > > > >> > > > >> > > Ivan,
> > > > > > >> > > > >> > >
> > > > > > >> > > > >> > > This may be a good point for a DBMS, but Ignite
> is
> > > much
> > > > > more
> > > > > > >> than
> > > > > > >> > > > >> just a
> > > > > > >> > > > >> > > DBMS and Ignite client code is not just an SQL
> > query
> > > > > (which
> > > > > > >> > > execution
> > > > > > >> > > > >> > > inherently heavily depends on DBMS). With
> database
> > > user
> > > > > is
> > > > > > >> > > expecting
> > > > > > >> > > > >> that
> > > > > > >> > > > >> > > server have a lot of control on query execution.
> > But
> > > > with
> > > > > > >> Ignite,
> > > > > > >> > > in
> > > > > > >> > > > >> my
> > > > > > >> > > > >> > > opinion,
> > > > > > >> > > > >> > > user writes generic code including business logic
> > in
> > > > > native
> > > > > > >> > > language
> > > > > > >> > > > >> and
> > > > > > >> > > > >> > > may
> > > > > > >> > > > >> > > expect more deterministic behaviour from a
> client.
> > > > > > >> > > > >> > >
> > > > > > >> > > > >> > > Also, thick clients do not use server-side
> > defaults.
> > > > > > >> > > > >> > >
> > > > > > >> > > > >> > > Of course, this question is debatable and It's
> not
> > > > like I
> > > > > > >> 100%
> > > > > > >> > > against
> > > > > > >> > > > >> > > server-side
> > > > > > >> > > > >> > > defaults here, I just suggest to discuss it in
> more
> > > > > detail.
> > > > > > >> > > > >> > >
> > > > > > >> > > > >> > > Best Regards,
> > > > > > >> > > > >> > > Igor
> > > > > > >> > > > >> > >
> > > > > > >> > > > >> > >
> > > > > > >> > > > >> > > On Mon, May 20, 2019 at 2:21 PM Павлухин Иван <
> > > > > > >> > > vololo...@gmail.com>
> > > > > > >> > > > >> wrote:
> > > > > > >> > > > >> > >
> > > > > > >> > > > >> > > > Igor, Alex,
> > > > > > >> > > > >> > > >
> > > > > > >> > > > >> > > > Regarding point 1. I must say that SQL vendors
> > > > usually
> > > > > > >> allow to
> > > > > > >> > > > >> > > > configure default timeouts and a transaction
> > > > isolation
> > > > > on a
> > > > > > >> > > server
> > > > > > >> > > > >> > > > side. E.g. in MySQL you can do a following:
> > > > > > >> > > > >> > > > set local tx_isolation = <isolation> -- per SQL
> > > > client
> > > > > > >> session
> > > > > > >> > > > >> > > > (usually physical network connection)
> > > > > > >> > > > >> > > > set global tx_isolation = <isolation> -- global
> > > > > settings,
> > > > > > >> all
> > > > > > >> > > > >> clients
> > > > > > >> > > > >> > > > (which does not override it) are affected
> > > > > > >> > > > >> > > >
> > > > > > >> > > > >> > > > So, if it is a standard practice why should do
> it
> > > > > > >> differently?
> > > > > > >> > > If it
> > > > > > >> > > > >> > > > is not, we can continue discussion. Do we have
> > some
> > > > > > >> examples
> > > > > > >> > > > >> following
> > > > > > >> > > > >> > > > opposite way (client-wide default setting)?
> > > > > > >> > > > >> > > >
> > > > > > >> > > > >> > > > пн, 20 мая 2019 г. в 13:50, Igor Sapego <
> > > > > > >> isap...@apache.org>:
> > > > > > >> > > > >> > > > >
> > > > > > >> > > > >> > > > > 1. In my opinion, having client-specific
> > > > transaction
> > > > > > >> > > parameters is
> > > > > > >> > > > >> > > > expected
> > > > > > >> > > > >> > > > > for
> > > > > > >> > > > >> > > > > client when have different arguments
> depending
> > on
> > > > > server
> > > > > > >> seems
> > > > > > >> > > > >> > > unexpected
> > > > > > >> > > > >> > > > > and can lead to hard-to-debug bugs and issues
> > > when
> > > > > > >> updating
> > > > > > >> > > from
> > > > > > >> > > > >> old to
> > > > > > >> > > > >> > > > new
> > > > > > >> > > > >> > > > > server versions. Also it goes against common
> > > > practice
> > > > > > >> with
> > > > > > >> > > > >> arguments of
> > > > > > >> > > > >> > > > thin
> > > > > > >> > > > >> > > > > client and thus, may be even more unexpected.
> > > > > > >> > > > >> > > > >
> > > > > > >> > > > >> > > > > I believe that if we want to add ability to
> > > client
> > > > to
> > > > > > >> adopt
> > > > > > >> > > some
> > > > > > >> > > > >> > > server's
> > > > > > >> > > > >> > > > > defaults
> > > > > > >> > > > >> > > > > we should implement it as separate feature,
> and
> > > it
> > > > > > >> should not
> > > > > > >> > > be a
> > > > > > >> > > > >> > > > default
> > > > > > >> > > > >> > > > > behaviour for client, user should explicitly
> > > state
> > > > > that
> > > > > > >> they
> > > > > > >> > > want
> > > > > > >> > > > >> this
> > > > > > >> > > > >> > > > > behaviour,
> > > > > > >> > > > >> > > > > so it won't be unexpected for them.
> > > > > > >> > > > >> > > > >
> > > > > > >> > > > >> > > > > 3. "Flags" field looks like a good solution
> to
> > > me.
> > > > > > >> > > > >> > > > >
> > > > > > >> > > > >> > > > > Best Regards,
> > > > > > >> > > > >> > > > > Igor
> > > > > > >> > > > >> > > > >
> > > > > > >> > > > >> > > > >
> > > > > > >> > > > >> > > > > On Mon, May 20, 2019 at 12:58 PM Alex
> Plehanov
> > <
> > > > > > >> > > > >> > > plehanov.a...@gmail.com>
> > > > > > >> > > > >> > > > > wrote:
> > > > > > >> > > > >> > > > >
> > > > > > >> > > > >> > > > > > Hi, Igor
> > > > > > >> > > > >> > > > > >
> > > > > > >> > > > >> > > > > > 1. I think it's better to have the ability
> to
> > > > > configure
> > > > > > >> > > > >> transaction
> > > > > > >> > > > >> > > > > > parameters (for example configure default
> > > timeout
> > > > > for
> > > > > > >> all
> > > > > > >> > > > >> clients) on
> > > > > > >> > > > >> > > > > > server-side, then don't have such ability
> and
> > > > > always
> > > > > > >> use
> > > > > > >> > > some
> > > > > > >> > > > >> > > > predefined
> > > > > > >> > > > >> > > > > > client-side values (which can be different
> > for
> > > > > > >> different
> > > > > > >> > > client
> > > > > > >> > > > >> > > > > > implementations). At least default timeout
> is
> > > > more
> > > > > > >> server
> > > > > > >> > > > >> specific
> > > > > > >> > > > >> > > then
> > > > > > >> > > > >> > > > > > client specific parameter since it can
> affect
> > > > > > >> server-side
> > > > > > >> > > > >> processes
> > > > > > >> > > > >> > > > (PME
> > > > > > >> > > > >> > > > > > for example).
> > > > > > >> > > > >> > > > > >
> > > > > > >> > > > >> > > > > > 2. IgniteUuid has 24 bytes length. This tx
> id
> > > > > needs to
> > > > > > >> be
> > > > > > >> > > > >> included to
> > > > > > >> > > > >> > > > each
> > > > > > >> > > > >> > > > > > cache operation under a transaction. And it
> > > > almost
> > > > > > >> will not
> > > > > > >> > > > >> simplify
> > > > > > >> > > > >> > > > server
> > > > > > >> > > > >> > > > > > code. Also, thin clients don't know how to
> > deal
> > > > > with
> > > > > > >> > > IgniteUuid
> > > > > > >> > > > >> now,
> > > > > > >> > > > >> > > > there
> > > > > > >> > > > >> > > > > > is no such entity in the protocol, there
> are
> > no
> > > > > > >> described
> > > > > > >> > > rules
> > > > > > >> > > > >> on
> > > > > > >> > > > >> > > how
> > > > > > >> > > > >> > > > to
> > > > > > >> > > > >> > > > > > convert it to a string. For
> > > monitoring/debugging
> > > > > > >> purposes we
> > > > > > >> > > > >> should
> > > > > > >> > > > >> > > > have
> > > > > > >> > > > >> > > > > > the same presentation of this entity on
> > server
> > > > and
> > > > > > >> client
> > > > > > >> > > > >> sides. I
> > > > > > >> > > > >> > > > think if
> > > > > > >> > > > >> > > > > > we need to know real tx id on the client
> side
> > > > it's
> > > > > > >> better to
> > > > > > >> > > > >> > > > additionally
> > > > > > >> > > > >> > > > > > include this value to OP_TX_START response
> > (we
> > > > > also can
> > > > > > >> > > > >> serialize it
> > > > > > >> > > > >> > > > as a
> > > > > > >> > > > >> > > > > > string to avoid introducing new entity on
> > > client
> > > > > side)
> > > > > > >> or
> > > > > > >> > > > >> create a
> > > > > > >> > > > >> > > new
> > > > > > >> > > > >> > > > > > operation to explicitly request tx id (for
> > > > example
> > > > > > >> > > OP_TX_INFO).
> > > > > > >> > > > >> > > > > >
> > > > > > >> > > > >> > > > > > 3. Make sense, we can reuse deprecated
> > "flags"
> > > > > field
> > > > > > >> > > > >> (undeprecate
> > > > > > >> > > > >> > > it),
> > > > > > >> > > > >> > > > > > which is included now to each cache
> > operation.
> > > > > > >> > > > >> > > > > >
> > > > > > >> > > > >> > > > > >
> > > > > > >> > > > >> > > > > > пт, 17 мая 2019 г. в 18:49, Igor Sapego <
> > > > > > >> isap...@apache.org
> > > > > > >> > > >:
> > > > > > >> > > > >> > > > > >
> > > > > > >> > > > >> > > > > > > Hi,
> > > > > > >> > > > >> > > > > > >
> > > > > > >> > > > >> > > > > > > I had a look at IEP and have several
> > > comments:
> > > > > > >> > > > >> > > > > > >
> > > > > > >> > > > >> > > > > > > 1. Why would one want to use to use
> > server's
> > > > > default
> > > > > > >> > > values
> > > > > > >> > > > >> for
> > > > > > >> > > > >> > > > > > Concurrency
> > > > > > >> > > > >> > > > > > > or Isolation?
> > > > > > >> > > > >> > > > > > > I believe, client should have its own
> > > defaults
> > > > > which
> > > > > > >> > > should be
> > > > > > >> > > > >> > > > explicitly
> > > > > > >> > > > >> > > > > > > documented, so that
> > > > > > >> > > > >> > > > > > > behaviour of transactions will not depend
> > on
> > > > the
> > > > > > >> server
> > > > > > >> > > node
> > > > > > >> > > > >> it was
> > > > > > >> > > > >> > > > > > routed
> > > > > > >> > > > >> > > > > > > to. The same goes
> > > > > > >> > > > >> > > > > > > for timeout.
> > > > > > >> > > > >> > > > > > >
> > > > > > >> > > > >> > > > > > > 2. Not sure about transaction ID
> > represented
> > > by
> > > > > int.
> > > > > > >> Why
> > > > > > >> > > not
> > > > > > >> > > > >> to use
> > > > > > >> > > > >> > > > > > > IgniteUuid? It should simplify
> > > > > > >> > > > >> > > > > > > server code. Also it may help with
> > > > > > >> monitoring/debugging if
> > > > > > >> > > > >> thin
> > > > > > >> > > > >> > > > clients
> > > > > > >> > > > >> > > > > > and
> > > > > > >> > > > >> > > > > > > server nodes use the
> > > > > > >> > > > >> > > > > > > same identifier for transactions. It does
> > not
> > > > > seem
> > > > > > >> as a
> > > > > > >> > > big
> > > > > > >> > > > >> > > overhead
> > > > > > >> > > > >> > > > to
> > > > > > >> > > > >> > > > > > me
> > > > > > >> > > > >> > > > > > > either.
> > > > > > >> > > > >> > > > > > >
> > > > > > >> > > > >> > > > > > > 3. Maybe it makes sense to add "In
> > > transaction"
> > > > > > >> boolean
> > > > > > >> > > flag
> > > > > > >> > > > >> to
> > > > > > >> > > > >> > > cache
> > > > > > >> > > > >> > > > > > > operation request header
> > > > > > >> > > > >> > > > > > > to avoid bloating message size in
> > > non-affected
> > > > > > >> scenarios.
> > > > > > >> > > > >> > > > > > >
> > > > > > >> > > > >> > > > > > > Best Regards,
> > > > > > >> > > > >> > > > > > > Igor
> > > > > > >> > > > >> > > > > > >
> > > > > > >> > > > >> > > > > > >
> > > > > > >> > > > >> > > > > > > On Mon, May 13, 2019 at 1:58 PM Alex
> > > Plehanov <
> > > > > > >> > > > >> > > > plehanov.a...@gmail.com>
> > > > > > >> > > > >> > > > > > > wrote:
> > > > > > >> > > > >> > > > > > >
> > > > > > >> > > > >> > > > > > > > Hi, Ivan.
> > > > > > >> > > > >> > > > > > > >
> > > > > > >> > > > >> > > > > > > > Thanks for your comments.
> > > > > > >> > > > >> > > > > > > >
> > > > > > >> > > > >> > > > > > > > 1. Transaction id in thin client
> protocol
> > > > it's
> > > > > > >> just a tx
> > > > > > >> > > > >> counter
> > > > > > >> > > > >> > > > for
> > > > > > >> > > > >> > > > > > the
> > > > > > >> > > > >> > > > > > > > current connection. It's not related to
> > > > > > >> > > GridCacheVersion.
> > > > > > >> > > > >> If we
> > > > > > >> > > > >> > > > want to
> > > > > > >> > > > >> > > > > > > > know GridCacheVersion on the client
> > side, I
> > > > > think
> > > > > > >> we
> > > > > > >> > > should
> > > > > > >> > > > >> > > > introduce a
> > > > > > >> > > > >> > > > > > > new
> > > > > > >> > > > >> > > > > > > > type of operation (for example
> > OP_TX_INFO).
> > > > > > >> > > > >> > > > > > > > 2. Error handling is already provided
> by
> > > thin
> > > > > > >> client
> > > > > > >> > > > >> protocol,
> > > > > > >> > > > >> > > > even in
> > > > > > >> > > > >> > > > > > > case
> > > > > > >> > > > >> > > > > > > > of empty response. Of course, the
> client
> > > will
> > > > > know
> > > > > > >> if
> > > > > > >> > > there
> > > > > > >> > > > >> is a
> > > > > > >> > > > >> > > > > > failure
> > > > > > >> > > > >> > > > > > > > occurred during OP_TX_END operation.
> > > > > > >> > > > >> > > > > > > > 3. AFAIK some of thin client
> > > implementations
> > > > > > >> already
> > > > > > >> > > send
> > > > > > >> > > > >> > > requests
> > > > > > >> > > > >> > > > and
> > > > > > >> > > > >> > > > > > > > process responses in an async way (.NET
> > for
> > > > > > >> example). As
> > > > > > >> > > > >> for java
> > > > > > >> > > > >> > > > thin
> > > > > > >> > > > >> > > > > > > > client, in the current implementation
> > > channel
> > > > > is
> > > > > > >> locked
> > > > > > >> > > > >> > > exclusively
> > > > > > >> > > > >> > > > > > > before
> > > > > > >> > > > >> > > > > > > > request send and until the response is
> > > > > processed.
> > > > > > >> I have
> > > > > > >> > > > >> some
> > > > > > >> > > > >> > > ideas
> > > > > > >> > > > >> > > > > > about
> > > > > > >> > > > >> > > > > > > > how to fix this (split send/receive
> > process
> > > > > into
> > > > > > >> two
> > > > > > >> > > > >> different
> > > > > > >> > > > >> > > > parts
> > > > > > >> > > > >> > > > > > and
> > > > > > >> > > > >> > > > > > > > acquire locks for this parts separately
> > or
> > > > > create
> > > > > > >> > > futures on
> > > > > > >> > > > >> > > > request
> > > > > > >> > > > >> > > > > > sent
> > > > > > >> > > > >> > > > > > > > and complete it after processing the
> > > response
> > > > > in a
> > > > > > >> > > dedicated
> > > > > > >> > > > >> > > > thread),
> > > > > > >> > > > >> > > > > > > I've
> > > > > > >> > > > >> > > > > > > > created ticket [1] for this issue and
> > will
> > > > try
> > > > > to
> > > > > > >> > > implement
> > > > > > >> > > > >> > > > prototype
> > > > > > >> > > > >> > > > > > in
> > > > > > >> > > > >> > > > > > > a
> > > > > > >> > > > >> > > > > > > > couple of days.
> > > > > > >> > > > >> > > > > > > >
> > > > > > >> > > > >> > > > > > > > About suspend/resume, yes, on
> server-side
> > > we
> > > > > should
> > > > > > >> > > resume
> > > > > > >> > > > >> tx
> > > > > > >> > > > >> > > > before
> > > > > > >> > > > >> > > > > > each
> > > > > > >> > > > >> > > > > > > > transactional cache operation and
> suspend
> > > the
> > > > > tx
> > > > > > >> after
> > > > > > >> > > the
> > > > > > >> > > > >> > > > operation.
> > > > > > >> > > > >> > > > > > In
> > > > > > >> > > > >> > > > > > > my
> > > > > > >> > > > >> > > > > > > > opinion, suspend/resume approach have
> > > several
> > > > > > >> advantages
> > > > > > >> > > > >> over
> > > > > > >> > > > >> > > > approach
> > > > > > >> > > > >> > > > > > > with
> > > > > > >> > > > >> > > > > > > > explicit tx id argument:
> > > > > > >> > > > >> > > > > > > > - Introducing explicit tx id argument
> for
> > > > cache
> > > > > > >> > > operations
> > > > > > >> > > > >> leads
> > > > > > >> > > > >> > > > to a
> > > > > > >> > > > >> > > > > > > > significant API change
> > > > > > >> > > > >> > > > > > > > - It's not clear how to use it together
> > > with
> > > > > > >> current
> > > > > > >> > > > >> > > > (tx-per-thread)
> > > > > > >> > > > >> > > > > > > > approach (for example, what if a thread
> > is
> > > > > already
> > > > > > >> held
> > > > > > >> > > > >> > > > transaction and
> > > > > > >> > > > >> > > > > > > > someone call cache operation with
> > explicit
> > > tx
> > > > > id?)
> > > > > > >> > > > >> > > > > > > > - Suspend/resume feature will also be
> > > useful
> > > > > for
> > > > > > >> thick
> > > > > > >> > > > >> clients
> > > > > > >> > > > >> > > > > > > > - Suspend/resume functionality is
> already
> > > > > partially
> > > > > > >> > > > >> implemented
> > > > > > >> > > > >> > > > (for
> > > > > > >> > > > >> > > > > > > > optimistic transactions only)
> > > > > > >> > > > >> > > > > > > >
> > > > > > >> > > > >> > > > > > > > [1]
> > > > > > >> https://issues.apache.org/jira/browse/IGNITE-11685
> > > > > > >> > > > >> > > > > > > >
> > > > > > >> > > > >> > > > > > > > пт, 3 мая 2019 г. в 08:10, Павлухин
> Иван
> > <
> > > > > > >> > > > >> vololo...@gmail.com>:
> > > > > > >> > > > >> > > > > > > >
> > > > > > >> > > > >> > > > > > > > > Hi Alex,
> > > > > > >> > > > >> > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > I went through IEP [1] and I have a
> > > couple
> > > > of
> > > > > > >> > > questions:
> > > > > > >> > > > >> > > > > > > > > 1. What is going to be used as
> > > transaction
> > > > > id?
> > > > > > >> In a
> > > > > > >> > > > >> described
> > > > > > >> > > > >> > > > > > protocol
> > > > > > >> > > > >> > > > > > > > > I see an int field for it. Should not
> > it
> > > be
> > > > > > >> > > > >> GridCacheVersion
> > > > > > >> > > > >> > > > > > > > > corresponding to
> > > > IgniteInternalTx#xidVersion?
> > > > > > >> > > > >> > > > > > > > > 2. OP_TX_END message assumes an empty
> > > > > response,
> > > > > > >> but I
> > > > > > >> > > > >> think
> > > > > > >> > > > >> > > that
> > > > > > >> > > > >> > > > > > > > > errors during tx finish are possible
> > and
> > > > > should
> > > > > > >> be
> > > > > > >> > > > >> returned in
> > > > > > >> > > > >> > > a
> > > > > > >> > > > >> > > > > > > > > response.
> > > > > > >> > > > >> > > > > > > > > 3. In IEP it is stated that async
> > > > processing
> > > > > of
> > > > > > >> lock
> > > > > > >> > > > >> operations
> > > > > > >> > > > >> > > > > > should
> > > > > > >> > > > >> > > > > > > > > be introduced on a client side to
> > enable
> > > > > > >> concurrent
> > > > > > >> > > > >> operations
> > > > > > >> > > > >> > > > from
> > > > > > >> > > > >> > > > > > > > > different client threads. Do you have
> > an
> > > > idea
> > > > > > >> how to
> > > > > > >> > > > >> achieve
> > > > > > >> > > > >> > > it?
> > > > > > >> > > > >> > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > Also, a bit about a suspend/resume
> > > trait. I
> > > > > > >> tried to
> > > > > > >> > > think
> > > > > > >> > > > >> > > about
> > > > > > >> > > > >> > > > it
> > > > > > >> > > > >> > > > > > > > > leaving away an existing transactions
> > > > > > >> implementation
> > > > > > >> > > in
> > > > > > >> > > > >> Ignite.
> > > > > > >> > > > >> > > > As I
> > > > > > >> > > > >> > > > > > > > > understood we are going to resume a
> tx
> > > > before
> > > > > > >> each
> > > > > > >> > > cache
> > > > > > >> > > > >> > > > operation in
> > > > > > >> > > > >> > > > > > > > > the tx and resume the tx after the
> > > > > operation. All
> > > > > > >> > > this to
> > > > > > >> > > > >> make
> > > > > > >> > > > >> > > an
> > > > > > >> > > > >> > > > > > > > > executing thread available for other
> > > > > operations
> > > > > > >> (e.g.
> > > > > > >> > > in
> > > > > > >> > > > >> other
> > > > > > >> > > > >> > > > txs).
> > > > > > >> > > > >> > > > > > > > > From the first glance it seems like
> an
> > > > > inversed
> > > > > > >> > > logic. A
> > > > > > >> > > > >> > > > > > > > > straightforward way is to execute a
> > cache
> > > > > > >> operation
> > > > > > >> > > > >> within a
> > > > > > >> > > > >> > > > > > > > > particular transaction defined as an
> > > > > explicit tx
> > > > > > >> id
> > > > > > >> > > > >> argument
> > > > > > >> > > > >> > > > (e.g.
> > > > > > >> > > > >> > > > > > > > > cache.put(key, value, txid)). Can we
> do
> > > so?
> > > > > > >> > > > >> > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > And leaving for now thin client API.
> I
> > > > > cannot say
> > > > > > >> > > that one
> > > > > > >> > > > >> > > > proposed
> > > > > > >> > > > >> > > > > > in
> > > > > > >> > > > >> > > > > > > > > IEP is good or bad. I can only say
> that
> > > it
> > > > > > >> ressembles
> > > > > > >> > > > >> current
> > > > > > >> > > > >> > > > thick
> > > > > > >> > > > >> > > > > > > > > client API. And perhaps it should
> not.
> > I
> > > > > think
> > > > > > >> that we
> > > > > > >> > > > >> should
> > > > > > >> > > > >> > > > > > consider
> > > > > > >> > > > >> > > > > > > > > similar APIs provided by other
> vendors
> > > and
> > > > > keep
> > > > > > >> in
> > > > > > >> > > mind
> > > > > > >> > > > >> that we
> > > > > > >> > > > >> > > > have
> > > > > > >> > > > >> > > > > > a
> > > > > > >> > > > >> > > > > > > > > bunch of client implementations for
> > > > different
> > > > > > >> > > languages. I
> > > > > > >> > > > >> > > > suppose
> > > > > > >> > > > >> > > > > > > > > that we can return to it a little bit
> > > > later.
> > > > > And
> > > > > > >> I
> > > > > > >> > > hope
> > > > > > >> > > > >> that we
> > > > > > >> > > > >> > > > will
> > > > > > >> > > > >> > > > > > > > > do it.
> > > > > > >> > > > >> > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > [1]
> > > > > > >> > > > >> > > > > > > > >
> > > > > > >> > > > >> > > > > > > >
> > > > > > >> > > > >> > > > > > >
> > > > > > >> > > > >> > > > > >
> > > > > > >> > > > >> > > >
> > > > > > >> > > > >> > >
> > > > > > >> > > > >>
> > > > > > >> > >
> > > > > > >>
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-34+Thin+client%3A+transactions+support
> > > > > > >> > > > >> > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > вт, 30 апр. 2019 г. в 13:24, Alex
> > > Plehanov
> > > > <
> > > > > > >> > > > >> > > > plehanov.a...@gmail.com
> > > > > > >> > > > >> > > > > > >:
> > > > > > >> > > > >> > > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > Hello, Igniters!
> > > > > > >> > > > >> > > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > I've update IEP [1] and implement
> PoC
> > > > > > >> according to
> > > > > > >> > > new
> > > > > > >> > > > >> > > approach
> > > > > > >> > > > >> > > > > > > > (multiple
> > > > > > >> > > > >> > > > > > > > > > concurrent transactions per
> > > connection).
> > > > > > >> > > > >> > > > > > > > > > But to move forward another feature
> > > need
> > > > > to be
> > > > > > >> > > > >> implemented:
> > > > > > >> > > > >> > > > > > > > > suspend/resume
> > > > > > >> > > > >> > > > > > > > > > for pessimistic transactions
> > > (IGNITE-5714
> > > > > [2]).
> > > > > > >> > > > >> > > Implementation
> > > > > > >> > > > >> > > > of
> > > > > > >> > > > >> > > > > > > > > > suspend/resume is ready now and
> > ticket
> > > in
> > > > > > >> 'Patch
> > > > > > >> > > > >> available'
> > > > > > >> > > > >> > > > status.
> > > > > > >> > > > >> > > > > > > Can
> > > > > > >> > > > >> > > > > > > > > any
> > > > > > >> > > > >> > > > > > > > > > transactions expert help with
> review
> > of
> > > > > > >> IGNITE-5714?
> > > > > > >> > > > >> > > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > [1]:
> > > > > > >> > > > >> > > > > > > > > >
> > > > > > >> > > > >> > > > > > > > >
> > > > > > >> > > > >> > > > > > > >
> > > > > > >> > > > >> > > > > > >
> > > > > > >> > > > >> > > > > >
> > > > > > >> > > > >> > > >
> > > > > > >> > > > >> > >
> > > > > > >> > > > >>
> > > > > > >> > >
> > > > > > >>
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-34+Thin+client%3A+transactions+support
> > > > > > >> > > > >> > > > > > > > > > [2]:
> > > > > > >> > > https://issues.apache.org/jira/browse/IGNITE-5714
> > > > > > >> > > > >> > > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > чт, 4 апр. 2019 г. в 11:32, Alex
> > > > Plehanov <
> > > > > > >> > > > >> > > > plehanov.a...@gmail.com
> > > > > > >> > > > >> > > > > > >:
> > > > > > >> > > > >> > > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > > Vladimir,
> > > > > > >> > > > >> > > > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > > Ok, then I will rewrite IEP in
> the
> > > near
> > > > > > >> future.
> > > > > > >> > > > >> > > > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > > чт, 4 апр. 2019 г. в 11:14,
> > Vladimir
> > > > > Ozerov <
> > > > > > >> > > > >> > > > > > voze...@gridgain.com
> > > > > > >> > > > >> > > > > > > >:
> > > > > > >> > > > >> > > > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> Hi Alex,
> > > > > > >> > > > >> > > > > > > > > > >>
> > > > > > >> > > > >> > > > > > > > > > >> I think we should be able to
> > handle
> > > > many
> > > > > > >> > > transactions
> > > > > > >> > > > >> > > > through a
> > > > > > >> > > > >> > > > > > > > single
> > > > > > >> > > > >> > > > > > > > > > >> connection. This will make our
> > > > protocol
> > > > > and
> > > > > > >> > > client
> > > > > > >> > > > >> > > > > > implementations
> > > > > > >> > > > >> > > > > > > > > much
> > > > > > >> > > > >> > > > > > > > > > >> more efficient, and simplicity
> > from
> > > > > > >> developer's
> > > > > > >> > > > >> > > perspective
> > > > > > >> > > > >> > > > is
> > > > > > >> > > > >> > > > > > not
> > > > > > >> > > > >> > > > > > > > our
> > > > > > >> > > > >> > > > > > > > > > >> goal. Consider normal nodes. We
> > have
> > > > > server
> > > > > > >> > > nodes and
> > > > > > >> > > > >> > > client
> > > > > > >> > > > >> > > > > > > nodes.
> > > > > > >> > > > >> > > > > > > > > You
> > > > > > >> > > > >> > > > > > > > > > >> may
> > > > > > >> > > > >> > > > > > > > > > >> span whatever number of
> > transactions
> > > > you
> > > > > > >> need,
> > > > > > >> > > but
> > > > > > >> > > > >> all of
> > > > > > >> > > > >> > > > them
> > > > > > >> > > > >> > > > > > are
> > > > > > >> > > > >> > > > > > > > > > >> coordinated through a single
> > > > connection.
> > > > > > >> The same
> > > > > > >> > > > >> should
> > > > > > >> > > > >> > > be
> > > > > > >> > > > >> > > > > > > > > applicable to
> > > > > > >> > > > >> > > > > > > > > > >> thin clients. Protocol is
> already
> > > > > designed
> > > > > > >> to
> > > > > > >> > > handle
> > > > > > >> > > > >> this,
> > > > > > >> > > > >> > > > as we
> > > > > > >> > > > >> > > > > > > > pass
> > > > > > >> > > > >> > > > > > > > > > >> unique operation ID in order to
> > > > > distinguish
> > > > > > >> one
> > > > > > >> > > > >> operation
> > > > > > >> > > > >> > > > from
> > > > > > >> > > > >> > > > > > > > > another. It
> > > > > > >> > > > >> > > > > > > > > > >> is true, though, that we will
> have
> > > to
> > > > > > >> introduce a
> > > > > > >> > > > >> kind of
> > > > > > >> > > > >> > > > > > > "session"
> > > > > > >> > > > >> > > > > > > > > > >> concept, and pass additional
> > > > identifier
> > > > > > >> along
> > > > > > >> > > with
> > > > > > >> > > > >> cache
> > > > > > >> > > > >> > > > > > > operations,
> > > > > > >> > > > >> > > > > > > > > but
> > > > > > >> > > > >> > > > > > > > > > >> this doesn't sound like a
> problem
> > to
> > > > me.
> > > > > > >> > > > >> > > > > > > > > > >>
> > > > > > >> > > > >> > > > > > > > > > >> And provided that currently
> > > > server-side
> > > > > > >> > > transactions
> > > > > > >> > > > >> are
> > > > > > >> > > > >> > > > bound
> > > > > > >> > > > >> > > > > > to
> > > > > > >> > > > >> > > > > > > > > threads
> > > > > > >> > > > >> > > > > > > > > > >> artificially, I would say that
> the
> > > > first
> > > > > > >> step in
> > > > > > >> > > > >> > > > implementation
> > > > > > >> > > > >> > > > > > of
> > > > > > >> > > > >> > > > > > > > > > >> transactions on thin clients
> > should
> > > be
> > > > > > >> decoupling
> > > > > > >> > > > >> > > > server-side
> > > > > > >> > > > >> > > > > > > > > transactions
> > > > > > >> > > > >> > > > > > > > > > >> from threads. Without this we
> will
> > > > have
> > > > > very
> > > > > > >> > > > >> inefficient
> > > > > > >> > > > >> > > > > > > > > implementation,
> > > > > > >> > > > >> > > > > > > > > > >> when every new client
> transaction
> > > have
> > > > > to
> > > > > > >> spawn
> > > > > > >> > > a new
> > > > > > >> > > > >> > > > thread.
> > > > > > >> > > > >> > > > > > This
> > > > > > >> > > > >> > > > > > > > is
> > > > > > >> > > > >> > > > > > > > > slow
> > > > > > >> > > > >> > > > > > > > > > >> and introduces high memory
> > pressure
> > > > on a
> > > > > > >> cluster
> > > > > > >> > > > >> node. We
> > > > > > >> > > > >> > > > > > already
> > > > > > >> > > > >> > > > > > > > work
> > > > > > >> > > > >> > > > > > > > > > >> this
> > > > > > >> > > > >> > > > > > > > > > >> way for MVCC transactions which
> > are
> > > > > spawned
> > > > > > >> from
> > > > > > >> > > JDBC
> > > > > > >> > > > >> > > > driver,
> > > > > > >> > > > >> > > > > > and
> > > > > > >> > > > >> > > > > > > > > believe
> > > > > > >> > > > >> > > > > > > > > > >> me, we do not want to replicated
> > > this
> > > > > bad
> > > > > > >> > > practice to
> > > > > > >> > > > >> > > other
> > > > > > >> > > > >> > > > > > > clients
> > > > > > >> > > > >> > > > > > > > > :-)
> > > > > > >> > > > >> > > > > > > > > > >>
> > > > > > >> > > > >> > > > > > > > > > >> Vladimir.
> > > > > > >> > > > >> > > > > > > > > > >>
> > > > > > >> > > > >> > > > > > > > > > >> On Thu, Apr 4, 2019 at 10:08 AM
> > Alex
> > > > > > >> Plehanov <
> > > > > > >> > > > >> > > > > > > > > plehanov.a...@gmail.com>
> > > > > > >> > > > >> > > > > > > > > > >> wrote:
> > > > > > >> > > > >> > > > > > > > > > >>
> > > > > > >> > > > >> > > > > > > > > > >> > Guys, so, do we need multiple
> > > > > concurrent
> > > > > > >> > > > >> transactions
> > > > > > >> > > > >> > > per
> > > > > > >> > > > >> > > > > > > > > connection?
> > > > > > >> > > > >> > > > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > There are pros and cons for
> each
> > > > > approach.
> > > > > > >> > > > >> Difference
> > > > > > >> > > > >> > > > between
> > > > > > >> > > > >> > > > > > > > > > >> approaches:
> > > > > > >> > > > >> > > > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > One transaction at a time per
> > > > > connection:
> > > > > > >> > > > >> > > > > > > > > > >> >  - This approach is used in
> > RDBMS
> > > > > world
> > > > > > >> and
> > > > > > >> > > users
> > > > > > >> > > > >> got
> > > > > > >> > > > >> > > > used to
> > > > > > >> > > > >> > > > > > it
> > > > > > >> > > > >> > > > > > > > > > >> >  - To use transactions
> > > concurrently
> > > > > users
> > > > > > >> need
> > > > > > >> > > to
> > > > > > >> > > > >> use
> > > > > > >> > > > >> > > > > > different
> > > > > > >> > > > >> > > > > > > > > > >> connections
> > > > > > >> > > > >> > > > > > > > > > >> > and get these connections via
> > > > > something
> > > > > > >> like a
> > > > > > >> > > > >> > > connection
> > > > > > >> > > > >> > > > pool
> > > > > > >> > > > >> > > > > > > > > > >> >  - Easy to implement (in fact,
> > PoC
> > > > is
> > > > > > >> already
> > > > > > >> > > done)
> > > > > > >> > > > >> > > > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > Multiple concurrent
> transactions
> > > per
> > > > > > >> > > connection:
> > > > > > >> > > > >> > > > > > > > > > >> >  - At least for java thin
> > client,
> > > we
> > > > > can
> > > > > > >> > > implement
> > > > > > >> > > > >> > > > transaction
> > > > > > >> > > > >> > > > > > > per
> > > > > > >> > > > >> > > > > > > > > > >> thread
> > > > > > >> > > > >> > > > > > > > > > >> > approach as implemented now
> for
> > > the
> > > > > thick
> > > > > > >> > > client
> > > > > > >> > > > >> > > (perhaps
> > > > > > >> > > > >> > > > > > other
> > > > > > >> > > > >> > > > > > > > thin
> > > > > > >> > > > >> > > > > > > > > > >> > clients can implement the same
> > > > > > >> abstraction)
> > > > > > >> > > > >> > > > > > > > > > >> >  - There is also protocol
> change
> > > for
> > > > > all
> > > > > > >> cache
> > > > > > >> > > > >> > > operations
> > > > > > >> > > > >> > > > > > needed
> > > > > > >> > > > >> > > > > > > > (to
> > > > > > >> > > > >> > > > > > > > > > >> bind
> > > > > > >> > > > >> > > > > > > > > > >> > cache operation to the
> > > transaction)
> > > > > > >> > > > >> > > > > > > > > > >> >  - Significant changes to all
> > > > > implemented
> > > > > > >> > > clients
> > > > > > >> > > > >> are
> > > > > > >> > > > >> > > > needed
> > > > > > >> > > > >> > > > > > > > > > >> >  - Implementation on the
> server
> > > side
> > > > > is
> > > > > > >> more
> > > > > > >> > > > >> complex
> > > > > > >> > > > >> > > > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > What do you think?
> > > > > > >> > > > >> > > > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > вт, 2 апр. 2019 г. в 16:29,
> Alex
> > > > > Plehanov
> > > > > > >> <
> > > > > > >> > > > >> > > > > > > > plehanov.a...@gmail.com
> > > > > > >> > > > >> > > > > > > > > >:
> > > > > > >> > > > >> > > > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > > Ilya,
> > > > > > >> > > > >> > > > > > > > > > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > > > We should be able to
> > multiplex
> > > > > several
> > > > > > >> > > > >> transactions
> > > > > > >> > > > >> > > > using
> > > > > > >> > > > >> > > > > > a
> > > > > > >> > > > >> > > > > > > > > single
> > > > > > >> > > > >> > > > > > > > > > >> > > Client connection.
> > > > > > >> > > > >> > > > > > > > > > >> > > In this case, we should
> > > > > significantly
> > > > > > >> change
> > > > > > >> > > > >> cache
> > > > > > >> > > > >> > > > > > operations
> > > > > > >> > > > >> > > > > > > > > syntax
> > > > > > >> > > > >> > > > > > > > > > >> (for
> > > > > > >> > > > >> > > > > > > > > > >> > > each implemented client), to
> > > bind
> > > > > each
> > > > > > >> > > operation
> > > > > > >> > > > >> to
> > > > > > >> > > > >> > > the
> > > > > > >> > > > >> > > > > > > > > transaction.
> > > > > > >> > > > >> > > > > > > > > > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > > > I want to also ask if
> > "Number
> > > of
> > > > > > >> entries
> > > > > > >> > > > >> > > > participating in
> > > > > > >> > > > >> > > > > > > > > > >> transaction
> > > > > > >> > > > >> > > > > > > > > > >> > > (may be approximate). 0 -
> > > default
> > > > > > >> value." is
> > > > > > >> > > > >> needed.
> > > > > > >> > > > >> > > > > > > > > > >> > > I've tried to minimize API
> > > changes
> > > > > > >> between
> > > > > > >> > > thick
> > > > > > >> > > > >> and
> > > > > > >> > > > >> > > > thin
> > > > > > >> > > > >> > > > > > > client
> > > > > > >> > > > >> > > > > > > > > to
> > > > > > >> > > > >> > > > > > > > > > >> > > simplify move from one to
> > > another.
> > > > > It's
> > > > > > >> the
> > > > > > >> > > only
> > > > > > >> > > > >> > > reason.
> > > > > > >> > > > >> > > > > > But I
> > > > > > >> > > > >> > > > > > > > > agree
> > > > > > >> > > > >> > > > > > > > > > >> with
> > > > > > >> > > > >> > > > > > > > > > >> > > you, the parameter is not
> very
> > > > > useful.
> > > > > > >> > > > >> > > > > > > > > > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > > вт, 2 апр. 2019 г. в 14:48,
> > Ilya
> > > > > > >> Kasnacheev <
> > > > > > >> > > > >> > > > > > > > > > >> ilya.kasnach...@gmail.com>:
> > > > > > >> > > > >> > > > > > > > > > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> Hello!
> > > > > > >> > > > >> > > > > > > > > > >> > >>
> > > > > > >> > > > >> > > > > > > > > > >> > >> Pavel, I agree with you
> > > > thorougly.
> > > > > We
> > > > > > >> > > should be
> > > > > > >> > > > >> able
> > > > > > >> > > > >> > > to
> > > > > > >> > > > >> > > > > > > > multiplex
> > > > > > >> > > > >> > > > > > > > > > >> > several
> > > > > > >> > > > >> > > > > > > > > > >> > >> transactions using a single
> > > > Client
> > > > > > >> > > connection.
> > > > > > >> > > > >> This
> > > > > > >> > > > >> > > > means
> > > > > > >> > > > >> > > > > > > > adding
> > > > > > >> > > > >> > > > > > > > > > >> > >> Transaction id parameter to
> > > every
> > > > > > >> affected
> > > > > > >> > > cache
> > > > > > >> > > > >> > > > operation
> > > > > > >> > > > >> > > > > > /
> > > > > > >> > > > >> > > > > > > > SQL
> > > > > > >> > > > >> > > > > > > > > > >> > statement
> > > > > > >> > > > >> > > > > > > > > > >> > >> (if applicable) to make
> sure
> > we
> > > > do
> > > > > > >> cache
> > > > > > >> > > > >> operations
> > > > > > >> > > > >> > > on
> > > > > > >> > > > >> > > > > > > relevant
> > > > > > >> > > > >> > > > > > > > > > >> > >> transaction.
> > > > > > >> > > > >> > > > > > > > > > >> > >>
> > > > > > >> > > > >> > > > > > > > > > >> > >> This is how other things
> work
> > > in
> > > > > > >> Ignite,
> > > > > > >> > > such as
> > > > > > >> > > > >> > > > > > > communication.
> > > > > > >> > > > >> > > > > > > > > We do
> > > > > > >> > > > >> > > > > > > > > > >> > not
> > > > > > >> > > > >> > > > > > > > > > >> > >> open dozens of connections,
> > we
> > > > > > >> multiplex
> > > > > > >> > > > >> operations
> > > > > > >> > > > >> > > > > > > > > asynchronously
> > > > > > >> > > > >> > > > > > > > > > >> > through
> > > > > > >> > > > >> > > > > > > > > > >> > >> a single connection.
> > > > > > >> > > > >> > > > > > > > > > >> > >>
> > > > > > >> > > > >> > > > > > > > > > >> > >> I think that trying to pool
> > > > Ignite
> > > > > > >> > > connections
> > > > > > >> > > > >> will
> > > > > > >> > > > >> > > be
> > > > > > >> > > > >> > > > > > highly
> > > > > > >> > > > >> > > > > > > > > > >> > >> inconvenient,
> > > > > > >> > > > >> > > > > > > > > > >> > >> since there is no existing
> > > > > > >> infrastructure
> > > > > > >> > > for
> > > > > > >> > > > >> such
> > > > > > >> > > > >> > > > pooling
> > > > > > >> > > > >> > > > > > > > (like
> > > > > > >> > > > >> > > > > > > > > > >> there
> > > > > > >> > > > >> > > > > > > > > > >> > >> exists for JDBC).
> > > > > > >> > > > >> > > > > > > > > > >> > >>
> > > > > > >> > > > >> > > > > > > > > > >> > >> I want to also ask if
> "Number
> > > of
> > > > > > >> entries
> > > > > > >> > > > >> > > participating
> > > > > > >> > > > >> > > > in
> > > > > > >> > > > >> > > > > > > > > transaction
> > > > > > >> > > > >> > > > > > > > > > >> > (may
> > > > > > >> > > > >> > > > > > > > > > >> > >> be approximate). 0 -
> default
> > > > > value." is
> > > > > > >> > > needed.
> > > > > > >> > > > >> Does
> > > > > > >> > > > >> > > it
> > > > > > >> > > > >> > > > > > > > actually
> > > > > > >> > > > >> > > > > > > > > do
> > > > > > >> > > > >> > > > > > > > > > >> > >> anything in our tx
> protocol?
> > > > Users
> > > > > of
> > > > > > >> > > existing
> > > > > > >> > > > >> APIs
> > > > > > >> > > > >> > > are
> > > > > > >> > > > >> > > > > > > already
> > > > > > >> > > > >> > > > > > > > > > >> confused
> > > > > > >> > > > >> > > > > > > > > > >> > >> by
> > > > > > >> > > > >> > > > > > > > > > >> > >> this parameter, if we could
> > get
> > > > > rid of
> > > > > > >> it in
> > > > > > >> > > > >> thin
> > > > > > >> > > > >> > > > client
> > > > > > >> > > > >> > > > > > > > > protocol it
> > > > > > >> > > > >> > > > > > > > > > >> > would
> > > > > > >> > > > >> > > > > > > > > > >> > >> be nice clean-up.
> > > > > > >> > > > >> > > > > > > > > > >> > >>
> > > > > > >> > > > >> > > > > > > > > > >> > >> Regards,
> > > > > > >> > > > >> > > > > > > > > > >> > >> --
> > > > > > >> > > > >> > > > > > > > > > >> > >> Ilya Kasnacheev
> > > > > > >> > > > >> > > > > > > > > > >> > >>
> > > > > > >> > > > >> > > > > > > > > > >> > >>
> > > > > > >> > > > >> > > > > > > > > > >> > >> вт, 2 апр. 2019 г. в 09:55,
> > > Pavel
> > > > > > >> Tupitsyn <
> > > > > > >> > > > >> > > > > > > > ptupit...@apache.org
> > > > > > >> > > > >> > > > > > > > > >:
> > > > > > >> > > > >> > > > > > > > > > >> > >>
> > > > > > >> > > > >> > > > > > > > > > >> > >> > Alex,
> > > > > > >> > > > >> > > > > > > > > > >> > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > now we can only support
> > one
> > > > > active
> > > > > > >> > > > >> transaction
> > > > > > >> > > > >> > > per
> > > > > > >> > > > >> > > > > > > > connection
> > > > > > >> > > > >> > > > > > > > > > >> > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > I totally understand
> > > > server-side
> > > > > and
> > > > > > >> > > protocol
> > > > > > >> > > > >> > > > limitations
> > > > > > >> > > > >> > > > > > > > that
> > > > > > >> > > > >> > > > > > > > > are
> > > > > > >> > > > >> > > > > > > > > > >> > >> causing
> > > > > > >> > > > >> > > > > > > > > > >> > >> > this.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > But I have no idea how to
> > > > support
> > > > > > >> this in
> > > > > > >> > > > >> .NET Thin
> > > > > > >> > > > >> > > > > > Client,
> > > > > > >> > > > >> > > > > > > > for
> > > > > > >> > > > >> > > > > > > > > > >> > example.
> > > > > > >> > > > >> > > > > > > > > > >> > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > It is thread-safe and can
> > > > handle
> > > > > > >> multiple
> > > > > > >> > > > >> async
> > > > > > >> > > > >> > > > > > operations
> > > > > > >> > > > >> > > > > > > in
> > > > > > >> > > > >> > > > > > > > > > >> > parallel.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > But with TX support we
> have
> > > to
> > > > > > >> somehow
> > > > > > >> > > switch
> > > > > > >> > > > >> to
> > > > > > >> > > > >> > > > > > > > > single-threaded
> > > > > > >> > > > >> > > > > > > > > > >> mode
> > > > > > >> > > > >> > > > > > > > > > >> > to
> > > > > > >> > > > >> > > > > > > > > > >> > >> > avoid unexpected effects.
> > > > > > >> > > > >> > > > > > > > > > >> > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > Any ideas?
> > > > > > >> > > > >> > > > > > > > > > >> > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > On Mon, Apr 1, 2019 at
> 6:38
> > > PM
> > > > > Alex
> > > > > > >> > > Plehanov <
> > > > > > >> > > > >> > > > > > > > > > >> plehanov.a...@gmail.com
> > > > > > >> > > > >> > > > > > > > > > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > wrote:
> > > > > > >> > > > >> > > > > > > > > > >> > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > Dmitriy, thank you!
> > > > > > >> > > > >> > > > > > > > > > >> > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > Guys, I've created the
> > IEP
> > > > [1]
> > > > > on
> > > > > > >> wiki,
> > > > > > >> > > > >> please
> > > > > > >> > > > >> > > > have a
> > > > > > >> > > > >> > > > > > > look.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > [1]
> > > > > > >> > > > >> > > > > > > > > > >> > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >>
> > > > > > >> > > > >> > > > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >>
> > > > > > >> > > > >> > > > > > > > >
> > > > > > >> > > > >> > > > > > > >
> > > > > > >> > > > >> > > > > > >
> > > > > > >> > > > >> > > > > >
> > > > > > >> > > > >> > > >
> > > > > > >> > > > >> > >
> > > > > > >> > > > >>
> > > > > > >> > >
> > > > > > >>
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-34+Thin+client%3A+transactions+support
> > > > > > >> > > > >> > > > > > > > > > >> > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > чт, 28 мар. 2019 г. в
> > > 14:33,
> > > > > > >> Dmitriy
> > > > > > >> > > Pavlov
> > > > > > >> > > > >> <
> > > > > > >> > > > >> > > > > > > > > dpav...@apache.org
> > > > > > >> > > > >> > > > > > > > > > >> >:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > Hi,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > I've added
> permissions
> > to
> > > > > account
> > > > > > >> > > > >> plehanov.alex
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > Recently Infra
> > integrated
> > > > > Apache
> > > > > > >> LDAP
> > > > > > >> > > with
> > > > > > >> > > > >> > > > > > confluence,
> > > > > > >> > > > >> > > > > > > so
> > > > > > >> > > > >> > > > > > > > > it is
> > > > > > >> > > > >> > > > > > > > > > >> > >> > possible
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > to
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > login using Apache
> > > > > credentials.
> > > > > > >> > > Probably
> > > > > > >> > > > >> we can
> > > > > > >> > > > >> > > > ask
> > > > > > >> > > > >> > > > > > > infra
> > > > > > >> > > > >> > > > > > > > > if
> > > > > > >> > > > >> > > > > > > > > > >> extra
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > permissions to edit
> > pages
> > > > > should
> > > > > > >> be
> > > > > > >> > > added
> > > > > > >> > > > >> for
> > > > > > >> > > > >> > > > > > > committers.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > Sincerely,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > Dmitriy Pavlov
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > ср, 27 мар. 2019 г. в
> > > > 13:37,
> > > > > Alex
> > > > > > >> > > > >> Plehanov <
> > > > > > >> > > > >> > > > > > > > > > >> > plehanov.a...@gmail.com
> > > > > > >> > > > >> > > > > > > > > > >> > >> >:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > Vladimir,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > About current tx:
> ok,
> > > > then
> > > > > we
> > > > > > >> don't
> > > > > > >> > > > >> need tx()
> > > > > > >> > > > >> > > > > > method
> > > > > > >> > > > >> > > > > > > in
> > > > > > >> > > > >> > > > > > > > > the
> > > > > > >> > > > >> > > > > > > > > > >> > >> interface
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > at
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > all (the same
> cached
> > > > > > >> transaction
> > > > > > >> > > info
> > > > > > >> > > > >> user
> > > > > > >> > > > >> > > can
> > > > > > >> > > > >> > > > > > store
> > > > > > >> > > > >> > > > > > > by
> > > > > > >> > > > >> > > > > > > > > > >> > himself).
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > About decoupling
> > > > > transactions
> > > > > > >> from
> > > > > > >> > > > >> threads on
> > > > > > >> > > > >> > > > the
> > > > > > >> > > > >> > > > > > > > server
> > > > > > >> > > > >> > > > > > > > > > >> side:
> > > > > > >> > > > >> > > > > > > > > > >> > for
> > > > > > >> > > > >> > > > > > > > > > >> > >> > now,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > we
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > can start with
> > > > > > >> thread-per-connection
> > > > > > >> > > > >> approach
> > > > > > >> > > > >> > > > (we
> > > > > > >> > > > >> > > > > > > only
> > > > > > >> > > > >> > > > > > > > > can
> > > > > > >> > > > >> > > > > > > > > > >> > support
> > > > > > >> > > > >> > > > > > > > > > >> > >> > one
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > active transaction
> > per
> > > > > > >> connection,
> > > > > > >> > > see
> > > > > > >> > > > >> below,
> > > > > > >> > > > >> > > > so we
> > > > > > >> > > > >> > > > > > > > need
> > > > > > >> > > > >> > > > > > > > > one
> > > > > > >> > > > >> > > > > > > > > > >> > >> > additional
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > dedicated thread
> for
> > > each
> > > > > > >> connection
> > > > > > >> > > > >> with
> > > > > > >> > > > >> > > > active
> > > > > > >> > > > >> > > > > > > > > > >> transaction),
> > > > > > >> > > > >> > > > > > > > > > >> > and
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > later
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > change server-side
> > > > > internals to
> > > > > > >> > > process
> > > > > > >> > > > >> > > client
> > > > > > >> > > > >> > > > > > > > > transactions
> > > > > > >> > > > >> > > > > > > > > > >> in
> > > > > > >> > > > >> > > > > > > > > > >> > any
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > server
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > thread (not
> dedicated
> > > to
> > > > > this
> > > > > > >> > > > >> connection).
> > > > > > >> > > > >> > > This
> > > > > > >> > > > >> > > > > > > change
> > > > > > >> > > > >> > > > > > > > > will
> > > > > > >> > > > >> > > > > > > > > > >> not
> > > > > > >> > > > >> > > > > > > > > > >> > >> > affect
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > the
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > thin client
> protocol,
> > > it
> > > > > only
> > > > > > >> > > affects
> > > > > > >> > > > >> the
> > > > > > >> > > > >> > > > server
> > > > > > >> > > > >> > > > > > > side.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > In any case, we
> can't
> > > > > support
> > > > > > >> > > concurrent
> > > > > > >> > > > >> > > > > > transactions
> > > > > > >> > > > >> > > > > > > > per
> > > > > > >> > > > >> > > > > > > > > > >> > >> connection
> > > > > > >> > > > >> > > > > > > > > > >> > >> > on
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > the client side
> > without
> > > > > > >> fundamental
> > > > > > >> > > > >> changes
> > > > > > >> > > > >> > > to
> > > > > > >> > > > >> > > > the
> > > > > > >> > > > >> > > > > > > > > current
> > > > > > >> > > > >> > > > > > > > > > >> > >> protocol
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > (cache
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > operation doesn't
> > bound
> > > > to
> > > > > > >> > > transaction
> > > > > > >> > > > >> or
> > > > > > >> > > > >> > > > thread
> > > > > > >> > > > >> > > > > > and
> > > > > > >> > > > >> > > > > > > > the
> > > > > > >> > > > >> > > > > > > > > > >> server
> > > > > > >> > > > >> > > > > > > > > > >> > >> > doesn't
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > know which thread
> on
> > > the
> > > > > client
> > > > > > >> > > side do
> > > > > > >> > > > >> this
> > > > > > >> > > > >> > > > cache
> > > > > > >> > > > >> > > > > > > > > > >> operation).
> > > > > > >> > > > >> > > > > > > > > > >> > In
> > > > > > >> > > > >> > > > > > > > > > >> > >> my
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > opinion, if a user
> > > wants
> > > > > to use
> > > > > > >> > > > >> concurrent
> > > > > > >> > > > >> > > > > > > > transactions,
> > > > > > >> > > > >> > > > > > > > > he
> > > > > > >> > > > >> > > > > > > > > > >> must
> > > > > > >> > > > >> > > > > > > > > > >> > >> use
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > different
> connections
> > > > from
> > > > > a
> > > > > > >> > > connection
> > > > > > >> > > > >> pool.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > About semantics of
> > > > > > >> suspend/resume
> > > > > > >> > > on the
> > > > > > >> > > > >> > > > > > client-side:
> > > > > > >> > > > >> > > > > > > > > it's
> > > > > > >> > > > >> > > > > > > > > > >> > >> absolutely
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > different than
> > > > server-side
> > > > > > >> > > semantics (we
> > > > > > >> > > > >> > > don't
> > > > > > >> > > > >> > > > need
> > > > > > >> > > > >> > > > > > > to
> > > > > > >> > > > >> > > > > > > > do
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > suspend/resume
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > to
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > pass transaction
> > > between
> > > > > > >> threads on
> > > > > > >> > > the
> > > > > > >> > > > >> > > > > > client-side),
> > > > > > >> > > > >> > > > > > > > but
> > > > > > >> > > > >> > > > > > > > > > >> can't
> > > > > > >> > > > >> > > > > > > > > > >> > be
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > implemented
> > efficiently
> > > > > without
> > > > > > >> > > > >> implemented
> > > > > > >> > > > >> > > > > > > > > suspend/resume on
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > server-side.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > Can anyone give me
> > > > > permissions
> > > > > > >> to
> > > > > > >> > > > >> create IEP
> > > > > > >> > > > >> > > on
> > > > > > >> > > > >> > > > > > > Apache
> > > > > > >> > > > >> > > > > > > > > wiki?
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > ср, 27 мар. 2019
> г. в
> > > > > 11:59,
> > > > > > >> > > Vladimir
> > > > > > >> > > > >> Ozerov
> > > > > > >> > > > >> > > <
> > > > > > >> > > > >> > > > > > > > > > >> > >> voze...@gridgain.com>:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > Hi Alex,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > My comments was
> > only
> > > > > about
> > > > > > >> the
> > > > > > >> > > > >> protocol.
> > > > > > >> > > > >> > > > Getting
> > > > > > >> > > > >> > > > > > > > > current
> > > > > > >> > > > >> > > > > > > > > > >> info
> > > > > > >> > > > >> > > > > > > > > > >> > >> about
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > transaction
> should
> > be
> > > > > > >> handled by
> > > > > > >> > > the
> > > > > > >> > > > >> client
> > > > > > >> > > > >> > > > > > itself.
> > > > > > >> > > > >> > > > > > > > It
> > > > > > >> > > > >> > > > > > > > > is
> > > > > > >> > > > >> > > > > > > > > > >> not
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > protocl's
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > concern. Same
> about
> > > > other
> > > > > > >> APIs and
> > > > > > >> > > > >> behavior
> > > > > > >> > > > >> > > > in
> > > > > > >> > > > >> > > > > > case
> > > > > > >> > > > >> > > > > > > > > another
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > is
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > attempted from
> the
> > > same
> > > > > > >> thread.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > Putting protocol
> > > aside,
> > > > > > >> > > transaction
> > > > > > >> > > > >> support
> > > > > > >> > > > >> > > > is
> > > > > > >> > > > >> > > > > > > > > complicated
> > > > > > >> > > > >> > > > > > > > > > >> > >> matter.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > I
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > would
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > propose to route
> > > > through
> > > > > IEP
> > > > > > >> and
> > > > > > >> > > wide
> > > > > > >> > > > >> > > > community
> > > > > > >> > > > >> > > > > > > > > > >> discussion. We
> > > > > > >> > > > >> > > > > > > > > > >> > >> need
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > to
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > review API and
> > > > semantics
> > > > > very
> > > > > > >> > > > >> carefully,
> > > > > > >> > > > >> > > > taking
> > > > > > >> > > > >> > > > > > > > > > >> SUSPEND/RESUME
> > > > > > >> > > > >> > > > > > > > > > >> > >> in
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > count.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > Also I do not see
> > how
> > > > we
> > > > > > >> support
> > > > > > >> > > > >> client
> > > > > > >> > > > >> > > > > > > transactions
> > > > > > >> > > > >> > > > > > > > > > >> > efficiently
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > without
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > decoupling
> > > transactions
> > > > > from
> > > > > > >> > > threads
> > > > > > >> > > > >> on the
> > > > > > >> > > > >> > > > > > server
> > > > > > >> > > > >> > > > > > > > side
> > > > > > >> > > > >> > > > > > > > > > >> first.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > Because
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > without it you
> will
> > > > need
> > > > > a
> > > > > > >> > > dedicated
> > > > > > >> > > > >> server
> > > > > > >> > > > >> > > > > > thread
> > > > > > >> > > > >> > > > > > > > for
> > > > > > >> > > > >> > > > > > > > > > >> every
> > > > > > >> > > > >> > > > > > > > > > >> > >> > client's
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > transaction which
> > is
> > > > slow
> > > > > > >> and may
> > > > > > >> > > even
> > > > > > >> > > > >> > > crash
> > > > > > >> > > > >> > > > the
> > > > > > >> > > > >> > > > > > > > > server.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > Vladimir.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > On Wed, Mar 27,
> > 2019
> > > at
> > > > > > >> 11:44 AM
> > > > > > >> > > Alex
> > > > > > >> > > > >> > > > Plehanov <
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > >
> > plehanov.a...@gmail.com>
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > wrote:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > Vladimir, what
> if
> > > we
> > > > > want
> > > > > > >> to get
> > > > > > >> > > > >> current
> > > > > > >> > > > >> > > > > > > > transaction
> > > > > > >> > > > >> > > > > > > > > info
> > > > > > >> > > > >> > > > > > > > > > >> > >> (tx()
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > method)?
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > Does close()
> > method
> > > > > mapped
> > > > > > >> to
> > > > > > >> > > > >> > > > TX_END(rollback)?
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > For example,
> this
> > > > code:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > try(tx =
> > > txStart()) {
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > >
>  tx.commit();
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > }
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > Will produce:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > TX_START
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > TX_END(commit)
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > >
> TX_END(rollback)
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > Am I understand
> > you
> > > > > right?
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > About xid.
> There
> > is
> > > > yet
> > > > > > >> another
> > > > > > >> > > > >> proposal.
> > > > > > >> > > > >> > > > Use
> > > > > > >> > > > >> > > > > > > some
> > > > > > >> > > > >> > > > > > > > > unique
> > > > > > >> > > > >> > > > > > > > > > >> > per
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > connection
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > id
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > (integer,
> simple
> > > > > counter)
> > > > > > >> for
> > > > > > >> > > > >> identifying
> > > > > > >> > > > >> > > > the
> > > > > > >> > > > >> > > > > > > > > > >> transaction on
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > commit/rollback
> > > > > message.
> > > > > > >> The
> > > > > > >> > > client
> > > > > > >> > > > >> gets
> > > > > > >> > > > >> > > > this
> > > > > > >> > > > >> > > > > > id
> > > > > > >> > > > >> > > > > > > > > from the
> > > > > > >> > > > >> > > > > > > > > > >> > >> server
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > with
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > transaction
> info
> > > and
> > > > > sends
> > > > > > >> it
> > > > > > >> > > back
> > > > > > >> > > > >> to the
> > > > > > >> > > > >> > > > > > server
> > > > > > >> > > > >> > > > > > > > when
> > > > > > >> > > > >> > > > > > > > > > >> trying
> > > > > > >> > > > >> > > > > > > > > > >> > >> to
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > commit/rollback
> > > > > > >> transaction.
> > > > > > >> > > This
> > > > > > >> > > > >> id is
> > > > > > >> > > > >> > > not
> > > > > > >> > > > >> > > > > > shown
> > > > > > >> > > > >> > > > > > > > to
> > > > > > >> > > > >> > > > > > > > > > >> users.
> > > > > > >> > > > >> > > > > > > > > > >> > >> But
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > also
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > we
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > can
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > pass from
> server
> > to
> > > > > client
> > > > > > >> real
> > > > > > >> > > > >> > > > transaction id
> > > > > > >> > > > >> > > > > > > > (xid)
> > > > > > >> > > > >> > > > > > > > > with
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > info
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > for diagnostic
> > > > > purposes.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > And one more
> > > > question:
> > > > > what
> > > > > > >> > > should
> > > > > > >> > > > >> we do
> > > > > > >> > > > >> > > > if the
> > > > > > >> > > > >> > > > > > > > > client
> > > > > > >> > > > >> > > > > > > > > > >> > starts
> > > > > > >> > > > >> > > > > > > > > > >> > >> a
> > > > > > >> > > > >> > > > > > > > > > >> > >> > new
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > transaction
> > without
> > > > > ending
> > > > > > >> the
> > > > > > >> > > old
> > > > > > >> > > > >> one?
> > > > > > >> > > > >> > > > Should
> > > > > > >> > > > >> > > > > > we
> > > > > > >> > > > >> > > > > > > > > end the
> > > > > > >> > > > >> > > > > > > > > > >> > old
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > implicitly
> > > (rollback)
> > > > > or
> > > > > > >> throw
> > > > > > >> > > an
> > > > > > >> > > > >> > > > exception to
> > > > > > >> > > > >> > > > > > > the
> > > > > > >> > > > >> > > > > > > > > > >> client?
> > > > > > >> > > > >> > > > > > > > > > >> > In
> > > > > > >> > > > >> > > > > > > > > > >> > >> my
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > opinion,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > the first
> option
> > is
> > > > > > >> better. For
> > > > > > >> > > > >> example,
> > > > > > >> > > > >> > > > if we
> > > > > > >> > > > >> > > > > > > got
> > > > > > >> > > > >> > > > > > > > a
> > > > > > >> > > > >> > > > > > > > > > >> > >> previously
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > used
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > connection from
> > the
> > > > > > >> connection
> > > > > > >> > > > >> pool, we
> > > > > > >> > > > >> > > > should
> > > > > > >> > > > >> > > > > > > not
> > > > > > >> > > > >> > > > > > > > > worry
> > > > > > >> > > > >> > > > > > > > > > >> > about
> > > > > > >> > > > >> > > > > > > > > > >> > >> > any
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > uncompleted
> > > > transaction
> > > > > > >> started
> > > > > > >> > > by
> > > > > > >> > > > >> the
> > > > > > >> > > > >> > > > previous
> > > > > > >> > > > >> > > > > > > > user
> > > > > > >> > > > >> > > > > > > > > of
> > > > > > >> > > > >> > > > > > > > > > >> this
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > connection.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > ср, 27 мар.
> 2019
> > > г. в
> > > > > > >> 11:02,
> > > > > > >> > > > >> Vladimir
> > > > > > >> > > > >> > > > Ozerov <
> > > > > > >> > > > >> > > > > > > > > > >> > >> > voze...@gridgain.com
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > >:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > As far as
> > > > > > >> > > > >> SUSPEND/RESUME/SAVEPOINT - we
> > > > > > >> > > > >> > > > do
> > > > > > >> > > > >> > > > > > not
> > > > > > >> > > > >> > > > > > > > > support
> > > > > > >> > > > >> > > > > > > > > > >> > them
> > > > > > >> > > > >> > > > > > > > > > >> > >> > yet,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > and
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > adding
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > them in
> future
> > > > > should not
> > > > > > >> > > > >> conflict with
> > > > > > >> > > > >> > > > > > simple
> > > > > > >> > > > >> > > > > > > > > > >> START/END
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > infrastructure.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > On Wed, Mar
> 27,
> > > > 2019
> > > > > at
> > > > > > >> 11:00
> > > > > > >> > > AM
> > > > > > >> > > > >> > > Vladimir
> > > > > > >> > > > >> > > > > > > Ozerov
> > > > > > >> > > > >> > > > > > > > <
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > >
> voze...@gridgain.com
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > wrote:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > > Hi Alex,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > > I am not
> sure
> > > we
> > > > > need 5
> > > > > > >> > > > >> commands.
> > > > > > >> > > > >> > > > Wouldn't
> > > > > > >> > > > >> > > > > > it
> > > > > > >> > > > >> > > > > > > > be
> > > > > > >> > > > >> > > > > > > > > > >> enough
> > > > > > >> > > > >> > > > > > > > > > >> > to
> > > > > > >> > > > >> > > > > > > > > > >> > >> > have
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > only
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > two?
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > > START -
> > accepts
> > > > > > >> optional
> > > > > > >> > > > >> parameters,
> > > > > > >> > > > >> > > > > > returns
> > > > > > >> > > > >> > > > > > > > > > >> transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> info
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > > END -
> > provides
> > > > > commit
> > > > > > >> flag,
> > > > > > >> > > > >> returns
> > > > > > >> > > > >> > > > void
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > > Vladimir.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > > On Wed, Mar
> > 27,
> > > > > 2019 at
> > > > > > >> > > 8:26 AM
> > > > > > >> > > > >> Alex
> > > > > > >> > > > >> > > > > > > Plehanov <
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > >
> > > > plehanov.a...@gmail.com
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > > wrote:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> Sergey,
> yes,
> > > the
> > > > > > >> close is
> > > > > > >> > > > >> something
> > > > > > >> > > > >> > > > like
> > > > > > >> > > > >> > > > > > > > silent
> > > > > > >> > > > >> > > > > > > > > > >> > rollback.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > But
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > we
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > can
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> also
> > implement
> > > > > this
> > > > > > >> on the
> > > > > > >> > > > >> client
> > > > > > >> > > > >> > > > side,
> > > > > > >> > > > >> > > > > > just
> > > > > > >> > > > >> > > > > > > > > using
> > > > > > >> > > > >> > > > > > > > > > >> > >> rollback
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > and
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > ignoring
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> errors in
> > the
> > > > > > >> response.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >>
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> ср, 27
> мар.
> > > 2019
> > > > > г. в
> > > > > > >> > > 00:04,
> > > > > > >> > > > >> Sergey
> > > > > > >> > > > >> > > > > > Kozlov <
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > skoz...@gridgain.com
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > >:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >>
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > Nikolay
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > Am I
> > > correctly
> > > > > > >> > > understand you
> > > > > > >> > > > >> > > > points:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >    -
> > close:
> > > > > rollback
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >    -
> > commit,
> > > > > close:
> > > > > > >> do
> > > > > > >> > > > >> nothing
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >    -
> > > rollback,
> > > > > > >> close: do
> > > > > > >> > > > >> what? (I
> > > > > > >> > > > >> > > > > > suppose
> > > > > > >> > > > >> > > > > > > > > nothing)
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > Also you
> > > > assume
> > > > > that
> > > > > > >> > > after
> > > > > > >> > > > >> > > > > > commit/rollback
> > > > > > >> > > > >> > > > > > > > we
> > > > > > >> > > > >> > > > > > > > > may
> > > > > > >> > > > >> > > > > > > > > > >> > need
> > > > > > >> > > > >> > > > > > > > > > >> > >> to
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > free
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > some
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >
> resources
> > on
> > > > > server
> > > > > > >> > > > >> node(s)or just
> > > > > > >> > > > >> > > > do on
> > > > > > >> > > > >> > > > > > > > > client
> > > > > > >> > > > >> > > > > > > > > > >> > started
> > > > > > >> > > > >> > > > > > > > > > >> > >> > TX?
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > On Tue,
> > Mar
> > > > 26,
> > > > > > >> 2019 at
> > > > > > >> > > > >> 10:41 PM
> > > > > > >> > > > >> > > > Alex
> > > > > > >> > > > >> > > > > > > > > Plehanov <
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > >
> > > > > plehanov.a...@gmail.com
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > wrote:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > >
> Sergey,
> > we
> > > > > have
> > > > > > >> the
> > > > > > >> > > close()
> > > > > > >> > > > >> > > > method in
> > > > > > >> > > > >> > > > > > > the
> > > > > > >> > > > >> > > > > > > > > thick
> > > > > > >> > > > >> > > > > > > > > > >> > >> client,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > it's
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > behavior
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> is
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > >
> slightly
> > > > > > >> different than
> > > > > > >> > > > >> > > rollback()
> > > > > > >> > > > >> > > > > > > method
> > > > > > >> > > > >> > > > > > > > > (it
> > > > > > >> > > > >> > > > > > > > > > >> > should
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > rollback
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > if
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > the
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > >
> > > transaction
> > > > > is not
> > > > > > >> > > > >> committed and
> > > > > > >> > > > >> > > > do
> > > > > > >> > > > >> > > > > > > > nothing
> > > > > > >> > > > >> > > > > > > > > if
> > > > > > >> > > > >> > > > > > > > > > >> the
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > is
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> already
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > >
> > > committed).
> > > > I
> > > > > > >> think we
> > > > > > >> > > > >> should
> > > > > > >> > > > >> > > > support
> > > > > > >> > > > >> > > > > > > > > > >> > >> try-with-resource
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > semantics
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > in
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> the
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > thin
> > > client
> > > > > and
> > > > > > >> > > > >> OP_TX_CLOSE will
> > > > > > >> > > > >> > > > be
> > > > > > >> > > > >> > > > > > > useful
> > > > > > >> > > > >> > > > > > > > > here.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > >
> Nikolay,
> > > > > > >> suspend/resume
> > > > > > >> > > > >> didn't
> > > > > > >> > > > >> > > > work
> > > > > > >> > > > >> > > > > > yet
> > > > > > >> > > > >> > > > > > > > for
> > > > > > >> > > > >> > > > > > > > > > >> > >> pessimistic
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > transactions.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > Also,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > the
> main
> > > > goal
> > > > > of
> > > > > > >> > > > >> suspend/resume
> > > > > > >> > > > >> > > > > > > operations
> > > > > > >> > > > >> > > > > > > > > is to
> > > > > > >> > > > >> > > > > > > > > > >> > >> support
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > >
> passing
> > > > > between
> > > > > > >> > > threads.
> > > > > > >> > > > >> In the
> > > > > > >> > > > >> > > > thin
> > > > > > >> > > > >> > > > > > > > > client, the
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > is
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > bound
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> to
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > the
> > client
> > > > > > >> connection,
> > > > > > >> > > not
> > > > > > >> > > > >> > > client
> > > > > > >> > > > >> > > > > > > thread.
> > > > > > >> > > > >> > > > > > > > I
> > > > > > >> > > > >> > > > > > > > > > >> think
> > > > > > >> > > > >> > > > > > > > > > >> > >> > passing
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > a
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >>
> transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > >
> between
> > > > > different
> > > > > > >> > > client
> > > > > > >> > > > >> > > > connections
> > > > > > >> > > > >> > > > > > is
> > > > > > >> > > > >> > > > > > > > not
> > > > > > >> > > > >> > > > > > > > > a
> > > > > > >> > > > >> > > > > > > > > > >> very
> > > > > > >> > > > >> > > > > > > > > > >> > >> > useful
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > case.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > вт, 26
> > > мар.
> > > > > 2019
> > > > > > >> г. в
> > > > > > >> > > > >> 22:17,
> > > > > > >> > > > >> > > > Nikolay
> > > > > > >> > > > >> > > > > > > > > Izhikov <
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > >
> > nizhi...@apache.org
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > >:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > >
> Hello,
> > > > Alex.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > We
> > also
> > > > have
> > > > > > >> suspend
> > > > > > >> > > and
> > > > > > >> > > > >> > > resume
> > > > > > >> > > > >> > > > > > > > > operations.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > I
> > think
> > > we
> > > > > > >> should
> > > > > > >> > > > >> support them
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > вт,
> 26
> > > > марта
> > > > > > >> 2019 г.,
> > > > > > >> > > > >> 22:07
> > > > > > >> > > > >> > > > Sergey
> > > > > > >> > > > >> > > > > > > > Kozlov
> > > > > > >> > > > >> > > > > > > > > <
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > >
> > skoz...@gridgain.com
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > >:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > Hi
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > >
> > Looks
> > > > > like I
> > > > > > >> missed
> > > > > > >> > > > >> > > something
> > > > > > >> > > > >> > > > but
> > > > > > >> > > > >> > > > > > > why
> > > > > > >> > > > >> > > > > > > > we
> > > > > > >> > > > >> > > > > > > > > > >> need
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > OP_TX_CLOSE
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> operation?
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > >
> > Also I
> > > > > > >> suggest to
> > > > > > >> > > > >> reserve a
> > > > > > >> > > > >> > > > code
> > > > > > >> > > > >> > > > > > for
> > > > > > >> > > > >> > > > > > > > > > >> SAVEPOINT
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > operation
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > which
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> very
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > >
> useful
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > to
> > > > > understand
> > > > > > >> where
> > > > > > >> > > > >> > > > transaction
> > > > > > >> > > > >> > > > > > has
> > > > > > >> > > > >> > > > > > > > been
> > > > > > >> > > > >> > > > > > > > > > >> rolled
> > > > > > >> > > > >> > > > > > > > > > >> > >> back
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > On
> > > Tue,
> > > > > Mar
> > > > > > >> 26,
> > > > > > >> > > 2019
> > > > > > >> > > > >> at 6:07
> > > > > > >> > > > >> > > > PM
> > > > > > >> > > > >> > > > > > Alex
> > > > > > >> > > > >> > > > > > > > > > >> Plehanov <
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >
> > > > > > >> plehanov.a...@gmail.com
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > >
> > wrote:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > Hello
> > > > > > >> Igniters!
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> I
> > > want
> > > > > to
> > > > > > >> pick
> > > > > > >> > > up the
> > > > > > >> > > > >> > > ticket
> > > > > > >> > > > >> > > > > > > > > IGNITE-7369
> > > > > > >> > > > >> > > > > > > > > > >> and
> > > > > > >> > > > >> > > > > > > > > > >> > >> add
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > transactions
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > support
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > to
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > our
> > > > thin
> > > > > > >> client
> > > > > > >> > > > >> > > > implementation.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > I've
> > > > > looked
> > > > > > >> at
> > > > > > >> > > our
> > > > > > >> > > > >> current
> > > > > > >> > > > >> > > > > > > > > implementation
> > > > > > >> > > > >> > > > > > > > > > >> and
> > > > > > >> > > > >> > > > > > > > > > >> > >> have
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > some
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> proposals
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > to
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > support
> > > > > > >> > > transactions:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > Add
> > > > new
> > > > > > >> > > operations
> > > > > > >> > > > >> to thin
> > > > > > >> > > > >> > > > > > client
> > > > > > >> > > > >> > > > > > > > > > >> protocol:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >>  OP_TX_GET,
> > > > > > >> > > 4000,
> > > > > > >> > > > >> Get
> > > > > > >> > > > >> > > > current
> > > > > > >> > > > >> > > > > > > > > > >> transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> for
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > client
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> connection
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >>  OP_TX_START,
> > > > > > >> > > > >> 4001,
> > > > > > >> > > > >> > > > Start a
> > > > > > >> > > > >> > > > > > new
> > > > > > >> > > > >> > > > > > > > > > >> > transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >>  OP_TX_COMMIT,
> > > > > > >> > > > >> 4002,
> > > > > > >> > > > >> > > > Commit
> > > > > > >> > > > >> > > > > > > > > transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > >  OP_TX_ROLLBACK,
> > > > > > >> > > > >> 4003,
> > > > > > >> > > > >> > > > > > Rollback
> > > > > > >> > > > >> > > > > > > > > > >> > transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >>  OP_TX_CLOSE,
> > > > > > >> > > > >> 4004,
> > > > > > >> > > > >> > > Close
> > > > > > >> > > > >> > > > > > > > > transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > From
> > > > the
> > > > > > >> client
> > > > > > >> > > side
> > > > > > >> > > > >> > > (java)
> > > > > > >> > > > >> > > > new
> > > > > > >> > > > >> > > > > > > > > interfaces
> > > > > > >> > > > >> > > > > > > > > > >> > >> will be
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > added:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > public
> > > > > > >> interface
> > > > > > >> > > > >> > > > > > > ClientTransactions
> > > > > > >> > > > >> > > > > > > > {
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > >  public
> > > > > > >> > > > >> > > ClientTransaction
> > > > > > >> > > > >> > > > > > > > > txStart();
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > >  public
> > > > > > >> > > > >> > > ClientTransaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > >
> > > > > > >> txStart(TransactionConcurrency
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > >
> > > > concurrency,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > > TransactionIsolation
> > > > > > >> > > > >> > > > isolation);
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > >  public
> > > > > > >> > > > >> > > ClientTransaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > >
> > > > > > >> txStart(TransactionConcurrency
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > >
> > > > concurrency,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > > TransactionIsolation
> > > > > > >> > > > >> > > > isolation,
> > > > > > >> > > > >> > > > > > > long
> > > > > > >> > > > >> > > > > > > > > > >> timeout,
> > > > > > >> > > > >> > > > > > > > > > >> > >> int
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > txSize);
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > >  public
> > > > > > >> > > > >> > > ClientTransaction
> > > > > > >> > > > >> > > > > > tx();
> > > > > > >> > > > >> > > > > > > > //
> > > > > > >> > > > >> > > > > > > > > Get
> > > > > > >> > > > >> > > > > > > > > > >> > >> current
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > connection
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > >
> > > > transaction
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > >  public
> > > > > > >> > > > >> > > > ClientTransactions
> > > > > > >> > > > >> > > > > > > > > > >> > withLabel(String
> > > > > > >> > > > >> > > > > > > > > > >> > >> > lb);
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> }
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > public
> > > > > > >> interface
> > > > > > >> > > > >> > > > > > ClientTransaction
> > > > > > >> > > > >> > > > > > > > > extends
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > AutoCloseable {
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > >  public
> > > > > > >> > > IgniteUuid
> > > > > > >> > > > >> > > > xid(); //
> > > > > > >> > > > >> > > > > > Do
> > > > > > >> > > > >> > > > > > > > we
> > > > > > >> > > > >> > > > > > > > > need
> > > > > > >> > > > >> > > > > > > > > > >> > it?
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > >  public
> > > > > > >> > > > >> > > > TransactionIsolation
> > > > > > >> > > > >> > > > > > > > > > >> isolation();
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > >  public
> > > > > > >> > > > >> > > > > > TransactionConcurrency
> > > > > > >> > > > >> > > > > > > > > > >> > >> concurrency();
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > >  public
> > > > > > >> long
> > > > > > >> > > > >> timeout();
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > >  public
> > > > > > >> String
> > > > > > >> > > > >> label();
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > >  public
> > > > > > >> void
> > > > > > >> > > > >> commit();
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > >  public
> > > > > > >> void
> > > > > > >> > > > >> > > rollback();
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > >  public
> > > > > > >> void
> > > > > > >> > > > >> close();
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> }
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > From
> > > > the
> > > > > > >> server
> > > > > > >> > > > >> side, I
> > > > > > >> > > > >> > > > think
> > > > > > >> > > > >> > > > > > as a
> > > > > > >> > > > >> > > > > > > > > first
> > > > > > >> > > > >> > > > > > > > > > >> step
> > > > > > >> > > > >> > > > > > > > > > >> > >> > (while
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >>
> transactions
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> suspend/resume
> > > > > > >> > > is not
> > > > > > >> > > > >> > > fully
> > > > > > >> > > > >> > > > > > > > > implemented)
> > > > > > >> > > > >> > > > > > > > > > >> we
> > > > > > >> > > > >> > > > > > > > > > >> > can
> > > > > > >> > > > >> > > > > > > > > > >> > >> > use
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > the
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > same
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > approach
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > as
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > for
> > > > > JDBC:
> > > > > > >> add a
> > > > > > >> > > new
> > > > > > >> > > > >> worker
> > > > > > >> > > > >> > > > to
> > > > > > >> > > > >> > > > > > each
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > ClientRequestHandler
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > and
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> process
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > requests by
> > > > > > >> this
> > > > > > >> > > > >> worker if
> > > > > > >> > > > >> > > > the
> > > > > > >> > > > >> > > > > > > > > > >> transaction is
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > started
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >>
> explicitly.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > > ClientRequestHandler
> > > > > > >> > > > >> is
> > > > > > >> > > > >> > > > bound to
> > > > > > >> > > > >> > > > > > > > > client
> > > > > > >> > > > >> > > > > > > > > > >> > >> > connection,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > so
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > there
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> will
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > be
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > 1:1
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > relation
> > > > > > >> between
> > > > > > >> > > > >> client
> > > > > > >> > > > >> > > > > > connection
> > > > > > >> > > > >> > > > > > > > and
> > > > > > >> > > > >> > > > > > > > > > >> > thread,
> > > > > > >> > > > >> > > > > > > > > > >> > >> > which
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > process
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > >
> > operations
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > in
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> a
> > > > > > >> transaction.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > Also,
> > > > > there
> > > > > > >> is a
> > > > > > >> > > > >> couple of
> > > > > > >> > > > >> > > > > > issues
> > > > > > >> > > > >> > > > > > > I
> > > > > > >> > > > >> > > > > > > > > want
> > > > > > >> > > > >> > > > > > > > > > >> to
> > > > > > >> > > > >> > > > > > > > > > >> > >> > discuss:
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> We
> > > > have
> > > > > > >> > > overloaded
> > > > > > >> > > > >> method
> > > > > > >> > > > >> > > > > > txStart
> > > > > > >> > > > >> > > > > > > > > with a
> > > > > > >> > > > >> > > > > > > > > > >> > >> different
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > set
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > of
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> >
> arguments.
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > Some
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >> > > > > >
> of
> > > the
> > > > > > >> arguments
> > > > > > >> > > may
> > > > > > >> > > > >> be
> > > > > > >> > > > >> > > > missing.
> > > > > > >> > > > >> > > > > > > To
> > > > > > >> > > > >> > > > > > > > > pass
> > > > > > >> > > > >> > > > > > > > > > >> > >> arguments
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > with
> > > > > > >> > > > >> > > > > > > > > > >> > >> > > > > > > > >>
> OP_TX_START
> > > > > > >> > > > >> > > > > > > > > > >> > >> &
> > > > > > >> > > > >
> > > > > > >> > > > >
> > > > > > >> > >
> > > > > > >> > >
> > > > > > >> > >
> > > > > > >> > > --
> > > > > > >> > > Best regards,
> > > > > > >> > > Ivan Pavlukhin
> > > > > > >> > >
> > > > > > >>
> > > > > > >>
> > > > > > >>
> > > > > > >> --
> > > > > > >> Best regards,
> > > > > > >> Ivan Pavlukhin
> > > > > > >>
> > > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Best regards,
> > > > > Ivan Pavlukhin
> > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to