[ https://issues.apache.org/jira/browse/LUCENENET-181?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12700688#action_12700688 ] Eyal Post commented on LUCENENET-181: ------------------------------------- {quote} One term-cache per thread is what is intended in Java (or I think so). {quote} No It's not. Here are the reasons: 1. If that's what they intended then they would have made enumerators static. 2. There can be many instances of TermInfosReader in a process each needing a *different* termEnum. It's doesn't make sense for them to use the same enum instance becuase an enum should be created *per TermInfosReader*. {quote} As I wanted to show in "TestCase", if you make "enumerators" static, cache is created only once per thread, otherwise it is created with every new instance of TermInfosReader {quote} Which is exactly how it should work. {quote} ( A private field would be enough for that type of cache). {quote} A private field would *not* be enough becuase multiple threads using the same TermInfosReader will get the same enumerator each stepping on the other's toe. That is exactly what ThreadLocal is preventing. > Port of ThreadLocal is wrong? > ----------------------------- > > Key: LUCENENET-181 > URL: https://issues.apache.org/jira/browse/LUCENENET-181 > Project: Lucene.Net > Issue Type: Improvement > Reporter: Digy > Priority: Minor > Attachments: TestCase.cs > > > AFAIK, "ThreadLocal" in Java is there to hold objects which are intented to be used thread-wide. So, its port-equivalent "LocalDataStoreSlot" should contain objects related with the executing thread. But, since they are not declared as "static" in Analyzer.cs, FieldsReader.cs, SegmentReader.cs and TermInfosReader.cs, they are created with every class contruction, changing the behaviour of "ThreadLocal" and possibly resulting in performance degradation. > I will attach a test case for this issue. > If I am wrong, then there is no problem. But If I am right we are in trouble; Since adding "static" to variables declared as LocalDataStoreSlot results in failing of almost all test cases. > DIGY -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.