[ 
https://issues.apache.org/jira/browse/SOLR-16983?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chris M. Hostetter updated SOLR-16983:
--------------------------------------
    Attachment: SOLR-16983-2.patch
      Assignee: Chris M. Hostetter
        Status: Open  (was: Open)

{quote}Well getHttpClient is deprecated, so we could begin weening tests off of 
it.  I've used the JDK's HttpClient, and it worked out well.
{quote}
Re-writing tests to use a new HTTP client implementation is more then i'm 
willing to bite off at the moment – especially given how prevalent it seems to 
be for tests to call {{HttpSolrClient.getHttpClient()}} 

( {{SolrTestCaseJ4.getHttpClient(String)}} is just the ugliest tip of the 
iceberg).

It didn't really click for me the other day, but even if we knew we had a 
{{ClosableHttpClient}} instance, and we called {{close()}} on it, 
{{ObjectReleaseTracker}} would still complain because that's not our class and 
it's close method doesn't know/care to call 
{{ObjectReleaseTracker.release(this)}}.
 
Apparently this is the whole purpose of the static {{HttpClientUtils.close()}} 
method which is already used in many tests: to call {{release()}} on 
{{HttpClient}} that are created by {{HttpClientUtils}}.  So I updated the 
handful of tests I know of "leaking" {{HttpClient}} instances to use that 
method.

The attached patch fixes all of the tests (that i know of) which currently 
break with  {{ObjectReleaseTracker}} correctly enabled in {{SolrTestCase}} ... 
if there are no objections i'll commit tomorrow so we stem the bleeding before 
even more tests get written that leak stuff 

> ObjectReleaseTracker completely useless in all SolrTestCaseJ4 based tests
> -------------------------------------------------------------------------
>
>                 Key: SOLR-16983
>                 URL: https://issues.apache.org/jira/browse/SOLR-16983
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: Chris M. Hostetter
>            Assignee: Chris M. Hostetter
>            Priority: Major
>         Attachments: SOLR-16983-1.patch, SOLR-16983-2.patch, 
> SOLR-16983.bug-demo.nocommit.patch, SOLR-16983.patch, 
> test-output-if-clear-is-removed-from-SolrTestCaseJ4.txt.gz
>
>
>  
> {{SolrTestCase}} has a {{@ClassRule}} named {{solrClassRules}} which calls 
> {{ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty()}} in it's 
> {{afterIfSuccessful()}} method to ensure that any objects which use 
> {{ObjectReleaseTracker}} are correctly released (ie: closed)
> _*...BUT...*_
> {{SolrTestCaseJ4}} has an {{@AfterClass}} method named 
> {{teardownTestCases()}} which calls {{ObjectReleaseTracker.clear()}} _before_ 
> the {{afterIfSuccessful()}} method of it's parent class's {{solrClassRules}} 
> gets to run.
> ... Which means that {{ObjectReleaseTracker}} is completley useless in every 
> test that descends from {{{}SolrTestCaseJ4{}}}.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org

Reply via email to