Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-6009

Stop using thread-locals for marshalling

    XMLWordPrintable

Details

    • Task
    • Resolution: Done
    • Major
    • 9.0.0.Final
    • 8.0.2.Final
    • Core, Marshalling
    • None

    Description

      Marshalling currently uses a thread-local cache for RiverMarshaller instances. One of the reasons to cache these {{RiverMarshaller}}s was that they always allocate 2 {{IdentityIntMap}}s, one for the instance cache and one for the class cache.

      But that also creates a problem, because these caches never shrink. If a StateResponseCommand includes a lot of Serializable objects, the caches will grow, and then they will never be used untile the next state transfer.

      We should change our internal marshalling API so that it's easy to reuse marshallers without using thread-locals, and to use one-off marshallers for state transfer.

      Currently unmarshalling also requires a thread-local to use the proper classloader. A session-based marshalling API would remove the need for the thread-local (especially important with sequential interceptors).

      Attachments

        Activity

          People

            Unassigned Unassigned
            dberinde@redhat.com Dan Berindei (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: