On Fri, Aug 5, 2011 at 11:13 PM, lars hofhansl <[email protected]> wrote: > I see this code in there: > > > scannerId = rand.nextLong(); > String scannerName = String.valueOf(scannerId); > scanners.put(scannerName, s); > > > It would be rare that rand.nextLong() would return the same id while an older > scanner is still in progress, but if that happens, > it seems the result would be pretty bad (i.e. the old client scanner now > returning result from a different server scanner). > We could just have an incrementing long (with 2^63, we'll never run our of > numbers, and if we're worried about that we could reset the counter every > time the scanners map is empty). >
This seems like a good idea. Mind filing a JIRA Lars? > I am probably not understanding this sufficiently, yet... Hence the question. > Your understanding looks fine to me. > > Also why is scanners declared as: > final Map<String, InternalScanner> scanners = > new ConcurrentHashMap<String, InternalScanner>(); > > > And not as > > final Map<Long, InternalScanner> scanners = > new ConcurrentHashMap<Long, InternalScanner>(); > > > All places except (ScannerListener) receive a long and calls either > String.valueOf or Long.toString to convert the passed long to a String. > Using Long still does autoboxing but it still seems better. Is the motivation > to more descriptive names in the future? > I do not know why it does the above. It seems off to me (May be vestige of an incomplete refactoring). Thanks for digging in here Lars, St.Ack
