|
|
-
thread safety of IndexedDocIterator
Sukant Hajra 2012-11-05, 19:24
We noticed that IndexedDocIterator.java has the following private static fields:
private static Text indexColf = DEFAULT_INDEX_COLF; private static Text docColf = DEFAULT_DOC_COLF;
The init method, which sets these is synchronized. Still, though, this synchronization doesn't seem enough to allow different runs of the iterator to use different values for indexColf and docColf. One run will set the "Colf" variables one way atomically in the synchronized init method. . . and another run and immediately interleave in alternate "Colf" settings, which breaks the original iterator run.
For now, we're not touching the indexColf and docColf, just leaving it as the defaults.
We're not blocked by this. We're just curious if there's a bug in this design. Also, if it's not a defect, we're interested in learning what system invariant of iterator execution makes this not a problem.
Thanks, Sukant
-
Re: thread safety of IndexedDocIterator
Billie Rinaldi 2012-11-05, 19:30
On Mon, Nov 5, 2012 at 11:24 AM, Sukant Hajra <[EMAIL PROTECTED]>wrote:
> We noticed that IndexedDocIterator.java has the following private static > fields: > > private static Text indexColf = DEFAULT_INDEX_COLF; > private static Text docColf = DEFAULT_DOC_COLF; > > The init method, which sets these is synchronized. Still, though, this > synchronization doesn't seem enough to allow different runs of the > iterator to > use different values for indexColf and docColf. One run will set the > "Colf" > variables one way atomically in the synchronized init method. . . and > another > run and immediately interleave in alternate "Colf" settings, which breaks > the > original iterator run. > > For now, we're not touching the indexColf and docColf, just leaving it as > the > defaults. > > We're not blocked by this. We're just curious if there's a bug in this > design. > Also, if it's not a defect, we're interested in learning what system > invariant > of iterator execution makes this not a problem. >
Sounds like a bug. Feel free to open a ticket!
Billie
> > Thanks, > Sukant >
-
Re: thread safety of IndexedDocIterator
William Slacum 2012-11-05, 20:29
At one point, Keith had warned me against kicking off threads inside a scan session. Is it possible we could have a discussion on the implications of this?
On Mon, Nov 5, 2012 at 11:30 AM, Billie Rinaldi <[EMAIL PROTECTED]> wrote:
> On Mon, Nov 5, 2012 at 11:24 AM, Sukant Hajra <[EMAIL PROTECTED]>wrote: > >> We noticed that IndexedDocIterator.java has the following private static >> fields: >> >> private static Text indexColf = DEFAULT_INDEX_COLF; >> private static Text docColf = DEFAULT_DOC_COLF; >> >> The init method, which sets these is synchronized. Still, though, this >> synchronization doesn't seem enough to allow different runs of the >> iterator to >> use different values for indexColf and docColf. One run will set the >> "Colf" >> variables one way atomically in the synchronized init method. . . and >> another >> run and immediately interleave in alternate "Colf" settings, which breaks >> the >> original iterator run. >> >> For now, we're not touching the indexColf and docColf, just leaving it as >> the >> defaults. >> >> We're not blocked by this. We're just curious if there's a bug in this >> design. >> Also, if it's not a defect, we're interested in learning what system >> invariant >> of iterator execution makes this not a problem. >> > > Sounds like a bug. Feel free to open a ticket! > > Billie > > > >> >> Thanks, >> Sukant >> > >
-
Re: thread safety of IndexedDocIterator
Keith Turner 2012-11-05, 20:44
On Mon, Nov 5, 2012 at 3:29 PM, William Slacum <[EMAIL PROTECTED]> wrote: > At one point, Keith had warned me against kicking off threads inside a scan > session. Is it possible we could have a discussion on the implications of > this?
I think this is a slightly different issue. The iterator is not kicking off other threads. The iterator does not seem to be safe to use when there are concurrent scans using it on a single tablet server.
There are two other static fields that seem suspicious, indexColfSet and docColfSet.
Keith
> > > On Mon, Nov 5, 2012 at 11:30 AM, Billie Rinaldi <[EMAIL PROTECTED]> wrote: >> >> On Mon, Nov 5, 2012 at 11:24 AM, Sukant Hajra <[EMAIL PROTECTED]> >> wrote: >>> >>> We noticed that IndexedDocIterator.java has the following private static >>> fields: >>> >>> private static Text indexColf = DEFAULT_INDEX_COLF; >>> private static Text docColf = DEFAULT_DOC_COLF; >>> >>> The init method, which sets these is synchronized. Still, though, this >>> synchronization doesn't seem enough to allow different runs of the >>> iterator to >>> use different values for indexColf and docColf. One run will set the >>> "Colf" >>> variables one way atomically in the synchronized init method. . . and >>> another >>> run and immediately interleave in alternate "Colf" settings, which breaks >>> the >>> original iterator run. >>> >>> For now, we're not touching the indexColf and docColf, just leaving it as >>> the >>> defaults. >>> >>> We're not blocked by this. We're just curious if there's a bug in this >>> design. >>> Also, if it's not a defect, we're interested in learning what system >>> invariant >>> of iterator execution makes this not a problem. >> >> >> Sounds like a bug. Feel free to open a ticket! >> >> Billie >> >> >>> >>> >>> Thanks, >>> Sukant >> >> >
|
|