[infinispan-dev] Major version cleaning

Denis V. Kirpichenkov denis.kirpichenkov at gmail.com
Mon Feb 20 13:22:29 EST 2017


Hello.

May I ask what's wrong with tree module?

I work on a project which depends on this module heavily. I hope it is 
not a huge problem to reimplement tree module or at least some part of 
it if someone will tell me where to start :)

--

Denis


On 20.02.2017 23:02, Sanne Grinovero wrote:
> -1 to batch removal
>
> Frankly I've always been extremely negative about the fact that
> batches are built on top of transactions. It's easy to find several
> iterations of rants of mine on this mailing list, especially fierce
> debates with Mircea. So I'd welcome a separation of these features.
>
> Yet, removing batching seems very wrong. I disagree that people should
> use Transactions instead; for many use cases it's overkill, and for
> others - and this is the main pain point I always had with the current
> design - it might make sense to have a batch (or more than one) within
> a transaction.
> I have had practical problems with needing to "flush" a single batch
> within a transaction as the size of the combined elements was getting
> too large. That doesn't imply at all that I'm ready to commit.
>
> @Pedro: the fact that some code is broken today is not relevant, when
> there's need for such features. Like you suggest, it had bad premises
> (build it on TX) so we should address that, but not throw it all out.
>
> @Bela is making spot-on objections based on use cases, which need to
> be addressed in some way. The "atomical" operations still don't work
> right[1] in Infinispan and that's a big usability problem.
>
> +1 to remove async TX
>
> I actually like the concept but the API should be different.. might as
> well remove this for now.
>
> +1 to remove the Tree module
>
> I personally never used it as you all advised against, yet it's been
> often requested by users; sometimes explicitly and others not so
> explicit, yet people often have need which would be solved by a good
> Tree module.
> I understand the reasons you all want to remove it: it's buggy. But I
> believe the real reason is that it should have been built on top of a
> proper batch API, and using real MVCC. In that case it wouldn't have
> been buggy, nor too hard to maintain, and might have attracted way
> more interest as well.
> I'd remove it as a temporary measure: delete the bad stuff, but
> hopefully it could be reintroduced built on better principles in some
> future?
>
> Thanks,
> Sanne
>
> [1] - "right" as in user expectations and actual practical use, which
> is currently different than in the twisted definition of "right" that
> the team has been using as an excuse ;-) I'll also proof that it
> doesn't work right according to your own twisted specs, when I find
> the time to finish some tests..
>
>
> On 20 February 2017 at 16:48, Pedro Ruivo <pedro at infinispan.org> wrote:
>>
>> On 20-02-2017 16:12, Bela Ban wrote:
>>>
>>> On 20/02/17 17:06, Tristan Tarrant wrote:
>>>> Hi guys, we discussed about this a little bit in the past and this
>>>> morning on IRC. Here are some proposed removals:
>>>>
>>>> - Remove the async transactional modes, as they are quite pointless
>>>> - Remove batching: users should use transactions
>>> How do you make a bunch of modifications and send them asynchronously if
>>> both batching *and* async TXs are getting removed?
>> We are not removing features, we are removing broken code.
>>
>> Batching is using transactions and async transactions doesn't make sense
>> since infinispan has to report to TransactionManager.
>>
>> Our current asyn-tx is broken in a way that is starts to commit and
>> reports OK to the transaction manager. if you have a topology change or
>> a conflict, you will end with inconsistent data.
>>
>> So, why do we keeping this code around?
>>
>> you can still move a transaction commit to another thread if you don't
>> wanna wait for its commit:
>>
>> tm.begin()
>> doWork()
>> tx = tm.suspend()
>> new_thread {
>>     tm.resume(tx)
>>     tm.commit()
>> }
>>
>> The best thing I can think of is to keep the batching API and
>> re-implement it to provide an endBatchAsync() that will do the above.
>>
>>> So if someone wants to apply a unit of work *atomically* (either all
>>> modifications within that unit of work are applied, or none), what
>>> alternatives exist?
>>>
>>>> - Remove the tree module: it doesn't work properly, and uses batching
>>>>
>>>> Please cast your votes
>>>>
>>>> Tristan
>>>>
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev



More information about the infinispan-dev mailing list