ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Александр Меньшиков <sharple...@gmail.com>
Subject Re: IGNITE-4713 : refactoring of GridFinishedFuture and GridFutureAdapter
Date Tue, 28 Feb 2017 14:32:46 GMT
Sorry, I mean I want to do fast work on this issue (not make code faster).
Your code is strange. You can see my view in my local temp PR:

https://github.com/SharplEr/ignite/pull/4/files

This is what I'm meaning.

I suppose "volatile" is not need here, because right now if
GridFutureAdapter#onDone() called in another thread than
GridFutureAdapter#get0, it will produce AssertionError.



2017-02-28 16:57 GMT+03:00 Vladislav Pyatkov <vldpyatkov@gmail.com>:

> Alexander,
>
> Are you sure, which it will be faster?
> The condition
>
> resFlag == RES and resFlag == ERR
>
> should be more complicated... like something this:
>
> getState() != 0 &&  !resFlag and getState() != 0 &&  resFlag
>
> But unlike getState(), restFag is not volatile...
>
> On Tue, Feb 28, 2017 at 4:26 PM, Александр Меньшиков <sharplermc@gmail.com
> > wrote:
>
>> Alexey, Vladislav, are you agree with me, or not? I want to do it faster
>> and move on.
>>
>> 2017-02-17 17:36 GMT+03:00 Александр Меньшиков <sharplermc@gmail.com>:
>>
>>> We can check "onDone" method was called with using getState() method. If
>>> getState()!=0 then  resFlag!=0. Just look at code.
>>>
>>>
>>> 2017-02-17 17:12 GMT+03:00 Александр Меньшиков <sharplermc@gmail.com>:
>>>
>>>> Like I said, if "resFlag==0" (of course 0 came from initialization)
>>>> means "you still haven't called the method onDone()", better make it clear.
>>>>
>>>>
>>>>
>>>> 2017-02-17 14:48 GMT+03:00 Vladislav Pyatkov <vldpyatkov@gmail.com>:
>>>>
>>>>> Alexander,
>>>>>
>>>>> I think, the resFlag will be initiated as 0 (new GridFutureAdapter()),
>>>>> but
>>>>> 1 and 2 states will be acquired on live.
>>>>>
>>>>>
>>>>> On Fri, Feb 17, 2017 at 1:56 PM, Александр Меньшиков
<
>>>>> sharplermc@gmail.com>
>>>>> wrote:
>>>>>
>>>>> > Alexey,
>>>>> >
>>>>> > I see only one place where writes in resFlag:
>>>>> >
>>>>> >                 if (err != null) {
>>>>> >                     resFlag = ERR;
>>>>> >                     this.res = err;
>>>>> >                 }
>>>>> >                 else {
>>>>> >                     resFlag = RES;
>>>>> >                     this.res = res;
>>>>> >                 }
>>>>> >
>>>>> > And the comparison with only two values: "ERR" and "RES". Except
>>>>> "assert
>>>>> > resFlag != 0;". So if this "assert" protect from call "get0" before
>>>>> call
>>>>> > "onDone" I think will be clearer to set some ready flag or use
>>>>> "enum" type.
>>>>> > And throw IllegalStateException if condition is false, because right
>>>>> now
>>>>> > developer will not get clear error massage.
>>>>> >
>>>>> > 17 февр. 2017 г. 11:34 пользователь "Alexey Goncharuk"
<
>>>>> > alexey.goncharuk@gmail.com> написал:
>>>>> >
>>>>> > Alexander,
>>>>> >
>>>>> > This change is not applicable for GridFutureAdapter because resFlag
>>>>> can
>>>>> > have 3 values there.
>>>>> >
>>>>> > 2017-02-16 19:58 GMT+03:00 Александр Меньшиков
<sharplermc@gmail.com
>>>>> >:
>>>>> >
>>>>> > > Hello.
>>>>> > >
>>>>> > > I propose to do refactoring of classes "GridFinishedFuture"
and
>>>>> > > "GridFutureAdapter". There is field "resFlag" which can equals
>>>>> "ERR = 1"
>>>>> > or
>>>>> > > "RES = 2". So I can replace it to one "bool haveResult" field.
>>>>> > >
>>>>> > > If there are no objections, I'm ready to proceed. If you find
more
>>>>> such
>>>>> > > classes, please write about them.
>>>>> > >
>>>>> >
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Vladislav Pyatkov
>>>>>
>>>>
>>>>
>>>
>>
>
>
> --
> Vladislav Pyatkov
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message