Uploaded image for project: 'Dev - Nexus Repo'
  1. Dev - Nexus Repo
  2. NEXUS-27564

Yum Group repomd.xml merge connection pool exhaustion causes permanent problems

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.30.1
    • Fix Version/s: 3.31.0
    • Component/s: Blobstore, Yum
    • Labels:

      Description

      When gathering the group repository member responses to generate a new repomd.xml, if opening the input stream fails for one of the members, it will cause all other allocated input streams to never be cleaned up.

      When using S3 blobstores, this can lead to the eventual exhaustion of the S3 connection pool.

      When using File based blobstores, this can lead to too many open files errors, and when examining lsof output, the files left open can be confirmed to be repomd.xml files.

      This problem is exacerbated by NEXUS-27563

      Example stack that can lead to leaving open connections when using S3 blobstores
      2021-05-10 14:36:38,587-0400 ERROR [qtp882690905-226] *UNKNOWN org.sonatype.nexus.repository.yum.orient.internal.group.OrientYumGroupHandler - Error opening input stream for yum-proxy-19                                             
      com.amazonaws.SdkClientException: Unable to execute HTTP request: Timeout waiting for connection from pool                                                                                                                             
              at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleRetryableException(AmazonHttpClient.java:1207)                                                                                                                    
              at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1153)                                                                                                                               
              at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:802)                                                                                                                                    
              at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:770)                                                                                                                             
              at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:744)                                                                                                                                      
              at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:704)                                                                                                                                   
              at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:686)                                                                                                                          
              at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:550)                                                                                                                                                      
              at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:530)                                                                                                                                                      
              at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5062)                                                                                                                                                   
              at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5008)                                                                                                                                                   
              at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1490)                                                                                                                                                
              at com.amazonaws.services.s3.EncryptingAmazonS3Client.getObject(EncryptingAmazonS3Client.java:164)                                                                                                                             
              at com.amazonaws.services.s3.EncryptingAmazonS3Client.getObject(EncryptingAmazonS3Client.java:171)
              at org.sonatype.nexus.blobstore.s3.internal.S3BlobStore$S3Blob.doGetInputStream(S3BlobStore.java:665)
              at org.sonatype.nexus.blobstore.BlobSupport.getInputStream(BlobSupport.java:87)
              at org.sonatype.nexus.repository.view.payloads.BlobPayload.openInputStream(BlobPayload.java:44)
              at org.sonatype.nexus.repository.view.Content.openInputStream(Content.java:95)
              at org.sonatype.nexus.repository.view.Payload$openInputStream.call(Unknown Source)
      

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              mbucher Michael Bucher
              Reporter:
              mbucher Michael Bucher
              Last Updated By:
              Peter Lynch Peter Lynch
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Date of First Response:

                  tigCommentSecurity.panel-title