Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-1116

Live lock when using compressed and virtual assets due to ByteArrayOutputStream being synchronized

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 5.2.0
    • 5.2.0
    • tapestry-core
    • None

    Description

      VirtualAssetStreamer in 5.1 and StackAssetRequestHandler in 5.2 are both affected by this bug. The scenario is many concurrent threads but slow connections; one thread starts to write buffered content (buffered inside a ByteArrayOutputStream) to a client; BAOS.writeTo(OutputStream) is synchronized: while that is occuring, no other thread can write that buffered content to any client.

      Solution is to not use ByteArrayOutputStream is a content buffer; instead create a class that tracks the content inside a byte array.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            hlship Howard Lewis Ship
            hlship Howard Lewis Ship
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment