Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Fix java heap space #18905

Open
4 of 6 tasks
jorgerod opened this issue Jun 11, 2024 · 0 comments
Open
4 of 6 tasks

[BUG] Fix java heap space #18905

jorgerod opened this issue Jun 11, 2024 · 0 comments

Comments

@jorgerod
Copy link
Contributor

jorgerod commented Jun 11, 2024

Bug Report Checklist

  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • Have you tested with the latest master to confirm the issue still exists?
  • Have you searched for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description

A java heap space is being produced when generating the API.

com.fasterxml.jackson.databind.JsonMappingException: TextBuffer overrun: size reached (2147542504) exceeds maximum of 2147483647 (through reference chain: java.util.HashMap["relatedItems"]->java.util.HashMap[4]->java.util.HashMap["bundleItemSummaries"]->java.util.HashMap[4]->java.util.HashMap["detail"]->java.util.HashMap["relatedElements"]->java.util.HashMap[0]->java.util.HashMap["specific"]->java.util.HashMap[3]->java.util.HashMap["relatedItems"]->java.util.HashMap[1]->java.util.HashMap["detail"]->java.util.HashMap["colors"]->java.util.HashMap[3]->java.util.HashMap["subarticles"]->java.util.HashMap[1]->java.util.HashMap["composition"]->java.util.HashMap["parts"]->java.util.HashMap[3]->java.util.HashMap["areas"]->java.util.HashMap[4]->java.util.HashMap["components"]->java.util.HashMap[0]->java.util.HashMap["percentage"])
        at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:402)
        at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:361)
        at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:323)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:871)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serializeContents(ObjectArraySerializer.java:253)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:214)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:23)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serializeContents(ObjectArraySerializer.java:253)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:214)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:23)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serializeContents(ObjectArraySerializer.java:253)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:214)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:23)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serializeContents(ObjectArraySerializer.java:253)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:214)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:23)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serializeContents(ObjectArraySerializer.java:253)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:214)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:23)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serializeContents(ObjectArraySerializer.java:253)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:214)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:23)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serializeContents(ObjectArraySerializer.java:253)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:214)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:23)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serializeContents(ObjectArraySerializer.java:253)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:214)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:23)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serializeContents(ObjectArraySerializer.java:253)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:214)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:23)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serializeContents(ObjectArraySerializer.java:253)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:214)
        at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:23)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:479)
        at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:318)
        at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1572)
        at com.fasterxml.jackson.databind.ObjectWriter._writeValueAndClose(ObjectWriter.java:1273)
        at com.fasterxml.jackson.databind.ObjectWriter.writeValueAsString(ObjectWriter.java:1140)
        at io.swagger.v3.core.util.Json.pretty(Json.java:24)
        at org.openapitools.codegen.examples.ExampleGenerator.generate(ExampleGenerator.java:162)
        at org.openapitools.codegen.examples.ExampleGenerator.generateFromResponseSchema(ExampleGenerator.java:98)
        at org.openapitools.codegen.examples.ExampleGenerator.generateFromResponseSchema(ExampleGenerator.java:64)
        at org.openapitools.codegen.DefaultCodegen.fromOperation(DefaultCodegen.java:4708)
        at org.openapitools.codegen.languages.AbstractJavaCodegen.fromOperation(AbstractJavaCodegen.java:1957)
        at org.openapitools.codegen.languages.SpringCodegen.fromOperation(SpringCodegen.java:1247)
        at org.openapitools.codegen.DefaultGenerator.processOperation(DefaultGenerator.java:1502)
        at org.openapitools.codegen.DefaultGenerator.processPaths(DefaultGenerator.java:1399)
        at org.openapitools.codegen.DefaultGenerator.generateApis(DefaultGenerator.java:603)
        at org.openapitools.codegen.DefaultGenerator.generate(DefaultGenerator.java:1231)
        at org.openapitools.codegen.cmd.Generate.execute(Generate.java:535)
        at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
        at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
Caused by: java.lang.IllegalStateException: TextBuffer overrun: size reached (2147542504) exceeds maximum of 2147483647
        at com.fasterxml.jackson.core.util.TextBuffer._reportBufferOverflow(TextBuffer.java:1165)
        at com.fasterxml.jackson.core.util.TextBuffer.expand(TextBuffer.java:1099)
        at com.fasterxml.jackson.core.util.TextBuffer.append(TextBuffer.java:783)
        at com.fasterxml.jackson.core.io.SegmentedStringWriter.write(SegmentedStringWriter.java:63)
        at com.fasterxml.jackson.core.json.WriterBasedJsonGenerator._flushBuffer(WriterBasedJsonGenerator.java:2060)
        at com.fasterxml.jackson.core.json.WriterBasedJsonGenerator.writeRaw(WriterBasedJsonGenerator.java:611)
        at com.fasterxml.jackson.core.util.DefaultIndenter.writeIndentation(DefaultIndenter.java:97)
        at com.fasterxml.jackson.core.util.DefaultPrettyPrinter.writeObjectEntrySeparator(DefaultPrettyPrinter.java:338)
        at com.fasterxml.jackson.core.json.WriterBasedJsonGenerator._writePPFieldName(WriterBasedJsonGenerator.java:369)
        at com.fasterxml.jackson.core.json.WriterBasedJsonGenerator._writeFieldName(WriterBasedJsonGenerator.java:172)
        at com.fasterxml.jackson.core.json.WriterBasedJsonGenerator.writeFieldName(WriterBasedJsonGenerator.java:155)
        at com.fasterxml.jackson.databind.ser.std.StdKeySerializers$StringKeySerializer.serialize(StdKeySerializers.java:302)
        at com.fasterxml.jackson.databind.ser.std.StdKeySerializers$Dynamic.serialize(StdKeySerializers.java:264)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:868)
        ... 104 more

The error occurs at two points:

  • When generating the example

String example = Json.pretty(resolvePropertyToExample("", mediaType, property, processedModels));

openapi-generator version

7.5.0 & 7.6.0

OpenAPI declaration file content or url
openapi: 3.0.0
info:
  title: Item Brands
  version: 1.0.0
  description: Item Brands
paths:
  '/relatedItems':
    get:
      tags:
        - Catalog V2
      summary: Shows the items details related to the item given by the itemId.
      description: The details of the items related to the requested itemId
      operationId: relatedItems
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RelatedItemsResponse'
components:
  schemas:
    RelatedItem:
      type: object
      properties:
        bundleItemSummaries:
          type: array
          maxItems: 1024
          description: List of the items associated with the bundle.
          items:
            $ref: '#/components/schemas/ItemSummary'
      description: Related Item Info
      additionalProperties:
        false
    RelatedItemDetail:
      type: object
      properties:
        colors:
          type: array
          maxItems: 1024
          description: List of the item colors.
          items:
            $ref: '#/components/schemas/Color'
      additionalProperties:
        false
    RelatedElements:
      type: object
      properties:
        specific:
          type: array
          maxItems: 1024
          description: Related elements for specific colors.
          items:
            $ref: '#/components/schemas/ColorAndRelatedItems'
      description: Related elements
      additionalProperties:
        false
    CompositionByLocation:
      type: object
      properties:
        zones:
          type: array
          maxItems: 1024
          description: Defines  the  composition  of  the  different zones  of  a  item
          items:
            $ref: '#/components/schemas/Location'
      description: Information about composition by zone
      additionalProperties: false
    Color:
      type: object
      properties:
        compositionByLocation:
          type: array
          maxItems: 1024
          description: List of composition information about each part of the item for the color grouped by zone
          items:
            $ref: '#/components/schemas/CompositionByLocation'
        subarticles:
          type: array
          maxItems: 1024
          description: A list of subarticles
          items:
            $ref: '#/components/schemas/SubArticles'
        colFilter:
          type: array
          maxItems: 1024
          items:
            type: string
            maxLength: 1024
      description: Color information
      additionalProperties: false
    SubArticles:
      type: object
      properties:
        name:
          type: string
          maxLength: 1024
          example: 'NINO'
          description: SubArticle name
        colorId:
          type: string
          maxLength: 1024
          example: '17731'
          description: SubArticle color id
        composition:
          type: object
          required:
            - exceptions
          properties:
            parts:
              type: array
              maxItems: 1024
              items:
                $ref: '#/components/schemas/Part'
            exceptions:
              type: array
              maxItems: 1024
              items:
                type: string
                maxLength: 1024
                example: 'EXCEPTO ADORNOS'
              example:
                - 'EXCEPTO ADORNOS'
                - 'EXCLUSIVE OF ELASTIC'
          additionalProperties:
            false
      description: Information about subarticles.
      additionalProperties:
        false
    Part:
      type: object
      required:
        - areas
        - microcontents
        - reinforcements
      properties:
        description:
          type: string
          maxLength: 1024
          example: 'EXTERIOR'
          description: Part description
        areas:
          type: array
          maxItems: 1024
          items:
            $ref: '#/components/schemas/Area'
        components:
          type: array
          maxItems: 1024
          items:
            $ref: '#/components/schemas/Component'
        microcontents:
          type: array
          maxItems: 1024
          items:
            type: string
            maxLength: 1024
            example: 'viscosa'
          example:
            - 'viscosa'
            - 'algodon'
        reinforcements:
          type: array
          maxItems: 1024
          items:
            type: string
            maxLength: 1024
      description: Information about part.
      additionalProperties:
        false
    Area:
      type: object
      properties:
        components:
          type: array
          maxItems: 1024
          items:
            $ref: '#/components/schemas/Component'
        description:
          type: string
          maxLength: 1024
          example: 'Area description'
          description: Area description
        zone:
          type: string
          maxLength: 1024
          example: 'Location 1'
          description: Area zone
        zoneName:
          type: string
          maxLength: 1024
          example: 'Location name 1'
          description: Area zone name
      description: Information about area.
      additionalProperties:
        false
    Component:
      type: object
      properties:
        material:
          type: string
          maxLength: 1024
          example: 'algodon'
          description: Component material
        percentage:
          type: string
          maxLength: 1024
          example: '100%'
          description: Component percentage
      description: Information about component.
      additionalProperties:
        false
    ItemSummary:
      type: object
      required:
        - itemType
      properties:
        detail:
          $ref: '#/components/schemas/ItemDetail'
      description: Item Summary Info
      additionalProperties:
        false
    ColorAndRelatedItems:
      type: object
      properties:
        relatedItems:
          type: array
          maxItems: 1024
          description: List of related items.
          items:
            $ref: '#/components/schemas/CatentryIdWithColor'
      description: Item color and related items
      additionalProperties:
        false
    Location:
      type: object
      properties:
        zone:
          type: string
          maxLength: 1024
          example: 'zone 1'
          description: zone identifier
        zoneName:
          type: string
          maxLength: 1024
          example: '56% name 1'
          description: zone name
      description: Information about zone
      additionalProperties:
        false
    CatentryIdWithColor:
      type: object
      properties:
        detail:
          $ref: '#/components/schemas/RelatedItemDetail'
      description: CatentryId and color
      additionalProperties:
        false
    ItemDetail:
      type: object
      required:
        - colors
        - xmediaDefaultSet
        - relatedItems
        - defaultImageType
      properties:
        relatedElements:
          type: array
          maxItems: 1024
          items:
            $ref: '#/components/schemas/RelatedElements'
      description: Item Detail Info.
      additionalProperties:
        false
    RelatedItemsResponse:
      type: object
      description: The response object from relatedItems.
      required:
        - relatedItems
      properties:
        relatedItems:
          type: array
          maxItems: 1024
          description: A list of related items details.
          items:
            $ref: '#/components/schemas/RelatedItem'
      additionalProperties:
        false

Generation Details
java -jar openapi-generator-cli-7.6.0.jar generate -g spring -i spec.yml -o out --additional-properties library=spring-boot,openApiNullable=false

Related issues/PRs
Suggest a fix
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant