Close xcontent parsers (partial)#31513
Conversation
|
Pinging @elastic/es-core-infra |
rjernst
left a comment
There was a problem hiding this comment.
LGTM. I left a couple minor things I noticed in formatting, but it was relatively easy to review since the changes were kept to only adding the necessary try lines.
| XContentParser actualJson = createParser(XContentType.JSON.xContent(), actual); | ||
| assertEquals(expectedJson.mapOrdered(), actualJson.mapOrdered()); | ||
| try (XContentParser expectedJson = createParser(XContentType.JSON.xContent(), expected); | ||
| XContentParser actualJson = createParser(XContentType.JSON.xContent(), actual)) { |
There was a problem hiding this comment.
nit: please align the second line of the try with the first line
| XContentParser emptyRegistryParser = xcontentType().xContent() | ||
| .createParser(NamedXContentRegistry.EMPTY, DeprecationHandler.THROW_UNSUPPORTED_OPERATION, new byte[] {}); | ||
| try (XContentParser emptyRegistryParser = xcontentType().xContent() | ||
| .createParser(NamedXContentRegistry.EMPTY, DeprecationHandler.THROW_UNSUPPORTED_OPERATION, new byte[] {})) { |
There was a problem hiding this comment.
I would break this at the = if possible, rather than on the dot of a method call.
There was a problem hiding this comment.
Unfortunately this will put us over the line length limit
| assertEquals("[3:27] unable to parse RescorerBuilder with name [bad_rescorer_name]: parser not found", e.getMessage()); | ||
| } | ||
|
|
||
| try (XContentParser parser = createParser(rescoreElement)) { |
There was a problem hiding this comment.
There seems to be an extra level of indentation for all the try statements added in this file.
| } catch (IllegalArgumentException e) { | ||
| assertEquals("Unexpected field [random]", e.getMessage()); | ||
| try (XContentParser parser = createParser(JsonXContent.jsonXContent, metadata)) { | ||
| try { |
There was a problem hiding this comment.
What about removing the nesting of trys here ?
try (XContentParser parser = createParser(JsonXContent.jsonXContent, metadata)) {
MetaData.Builder.fromXContent(parser);
fail();
} catch (IllegalArgumentException e) {
assertEquals("Unexpected field [random]", e.getMessage());
}
Partial pass at closing XContentParsers in server. This mostly involved adding try-with-resources statements around the usage of XContentParsers.
* elastic/master: (92 commits) Reduce number of raw types warnings (elastic#31523) Migrate scripted metric aggregation scripts to ScriptContext design (elastic#30111) turn GetFieldMappingsResponse to ToXContentObject (elastic#31544) Close xcontent parsers (partial) (elastic#31513) Ingest Attachment: Upgrade Tika to 1.18 (elastic#31252) TEST: Correct the assertion arguments order (elastic#31540) Add get field mappings to High Level REST API Client (elastic#31423) [DOCS] Updates Watcher examples for code testing (elastic#31152) TEST: Add bwc recovery tests with synced-flush index [DOCS] Move sql to docs (elastic#31474) [DOCS] Move monitoring to docs folder (elastic#31477) Core: Combine doExecute methods in TransportAction (elastic#31517) IndexShard should not return null stats (elastic#31528) fix repository update with the same settings but different type (elastic#31458) Fix Mockito trying to mock IOException that isn't thrown by method (elastic#31433) (elastic#31527) Node selector per client rather than per request (elastic#31471) Core: Combine messageRecieved methods in TransportRequestHandler (elastic#31519) Upgrade to Lucene 7.4.0. (elastic#31529) [ML] Add ML filter update API (elastic#31437) Allow multiple unicast host providers (elastic#31509) ...
* master: ingest: Add ignore_missing property to foreach filter (#22147) (#31578) Fix a formatting issue in the docvalue_fields documentation. (#31563) reduce log level at gradle configuration time [TEST] Close additional clients created while running yaml tests (#31575) Docs: Clarify sensitive fields watcher encryption (#31551) Watcher: Remove never executed code (#31135) Add support for switching distribution for all integration tests (#30874) Improve robustness of geo shape parser for malformed shapes (#31449) QA: Create xpack yaml features (#31403) Improve test times for tests using `RandomObjects::addFields` (#31556) [Test] Add full cluster restart test for Rollup (#31533) Enhance thread context uniqueness assertion [DOCS] Fix heading format errors (#31483) fix writeIndex evaluation for aliases (#31562) Add x-opaque-id to search slow logs (#31539) Watcher: Fix put watch action (#31524) Add package pre-install check for java binary (#31343) Reduce number of raw types warnings (#31523) Migrate scripted metric aggregation scripts to ScriptContext design (#30111) turn GetFieldMappingsResponse to ToXContentObject (#31544) Close xcontent parsers (partial) (#31513) Ingest Attachment: Upgrade Tika to 1.18 (#31252) TEST: Correct the assertion arguments order (#31540)
I'm working through the codebase trying to close every instance where we leave an XContentParser open... there are a lot of them. I will follow with separate PR's that enforce that we close XContentParsers.
I recommend viewing this PR with &w=1.
If there's too much here, I'm happy to break it up into multiple different PRs.
Relates #30692