[ https://issues.apache.org/jira/browse/LUCENENET-181?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12700606#action_12700606 ]
Digy commented on LUCENENET-181: -------------------------------- Hi Eyal, Would you test the code attached? TermInfosReader: {code} private SegmentTermEnum GetEnum() { SegmentTermEnum termEnum = (SegmentTermEnum) System.Threading.Thread.GetData(enumerators); if (termEnum == null) { termEnum = Terms(); System.Threading.Thread.SetData(enumerators, termEnum); } return termEnum; } {code} What is the meaning of the code if you initilalize "termEnum" everytime TermInfosReader is created What I try to say is, If they are not declared as static, they are not compatible with Java. DIGY > 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.