Oskar,

Right, this issue should be considered together with NH-3607 (Resilient 
Connection Provider).

RP

On Wednesday, September 3, 2014 7:31:46 PM UTC+1, Oskar Berggren wrote:
>
> 2014-09-03 1:16 GMT+02:00 Ricardo Peres <rjp...@gmail.com <javascript:>>:
>
>> Oskar,
>>
>> You are right, as usual! But my idea is to have a *pluggable* mechanism. 
>> The default, I admit, would be a bit dumb - just try... wait... retry... 
>> fail - but we could have more enhanced ones. Right now, all we have is an 
>> exception! :-)
>>
>
>
> I'm afraid I don't quite follow. Considering the code in PR #306, the way 
> I read it, that code in the default connection provider could exhibit the 
> failure mode described below (assuming an ADO.NET connection can go from 
> OPEN to CLOSED without an exception). And I don't see any retry logic?
>
> I don't have enough time to think deeply on it, so maybe I'm missing 
> something.
>
> /Oskar
>
>
> On Tuesday, September 2, 2014 9:36:43 PM UTC+1, Oskar Berggren wrote:
>
>> I'm not sure what the different failure modes are here... but here's one 
>>> scenario I'm thinking about: 
>>> * Inside non-distributed transaction.
>>> * Some changes (changeset X) flushed to DB.
>>> * Connection is lost.
>>> * A new connection is created transparently.
>>> * More changes (changeset Y) flushed to DB.
>>> * Application tries to close transaction.
>>>
>>> Wouldn't this patch:
>>> a) Loose changeset X, because the transaction was never committed and 
>>> the application wasn't made aware of the problem?
>>> b) Get exception when trying to commit a non-existing transaction over 
>>> the second connection?
>>> c) Permanently store changeset Y even if the exception mentioned in (b), 
>>> or some other exception, occurs due to lack of transaction on second 
>>> connection?
>>>
>>> /Oskar
>>>
>>>
>>>
>>>
>>> 2014-08-20 23:26 GMT+02:00 Ricardo Peres <rjp...@gmail.com>:
>>>
>>> I see this as something to make NH more reactive to scenarios such as 
>>>> cloud, where connections are lost and need to be open, similar to what EF 
>>>> is providing. What the default implementation does is, if the connection 
>>>> is 
>>>> closed, open it. Do you see problems related to transactions with this?
>>>> Obviously, this can wait for more discussion.
>>>>
>>>> RP
>>>>
>>>>
>>>> On Wednesday, August 20, 2014 9:48:44 PM UTC+1, Oskar Berggren wrote:
>>>>
>>>>> Is this a problematic scenario that requires a solution?
>>>>> How does it relate to ConnectionManager and the behavior of open/close 
>>>>> connection on transaction boundary? Interaction with TransactionScope - 
>>>>> might it cause unforeseen transaction promotions?
>>>>>
>>>>>
>>>>> /Oskar
>>>>>
>>>>>
>>>>>
>>>>> 2014-08-20 14:27 GMT+02:00 Ricardo Peres <rjp...@gmail.com>:
>>>>>
>>>>> Guys,
>>>>>>
>>>>>> I created issue NH-3671 and added a pull request. The idea behind it 
>>>>>> is:
>>>>>>  
>>>>>> - Before NHibernate issues DB operations, through calls to 
>>>>>> IDbCommand.ExecuteQuery, ExecuteReader or ExecuteScalar, it should call 
>>>>>> a 
>>>>>> new connection provider method, IConnectionProvider.EnsureConn
>>>>>> ectionIsOpen
>>>>>> - The base implementation in ConnectionProvider (virtual method) just 
>>>>>> does: if (conn.State != ConnectionState.Open) conn.Open()
>>>>>> - More enhanced (aka, resilient, like NH-3607) connection provider 
>>>>>> implementations can retry a number of times with a delay between them
>>>>>>
>>>>>> I see two potential problems:
>>>>>>
>>>>>> - It introduces a breaking change on IConnectionProvider, because it 
>>>>>> adds an additional method
>>>>>> - Not all DB calls can use this new method, because some dialects do 
>>>>>> their own calls, and they don't have a reference to the session or 
>>>>>> session 
>>>>>> factory from which we can get to the connection provider
>>>>>>
>>>>>> What are your thoughts?
>>>>>>
>>>>>> RP
>>>>>>
>>>>>>  -- 
>>>>>>
>>>>>> --- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "nhibernate-development" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to nhibernate-development+unsubscr...@googlegroups.com.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>  -- 
>>>>
>>>> --- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "nhibernate-development" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to nhibernate-development+unsubscr...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>  -- 
>>
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "nhibernate-development" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to nhibernate-development+unsubscr...@googlegroups.com 
>> <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"nhibernate-development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nhibernate-development+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to