Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-7434

Unnecessary object allocation and locking in GMSHealthMonitor.contactedBy

    XMLWordPrintableJSON

Details

    Description

      GMSHealthMonitor.contactedBy allocates a TimeStamp for every call but throws it away almost all of the time in the call to putIfAbsent. Additionally, putIfAbsent always brags a monitor on the hash segment resulting in unnecessary synchronization.

      All with use of JavaWorkarounds.computeIfAbsent to avoid the locking and object allocation for the hot path where the entry already exists.

      Benchmark profiling shows 77% of P2P reader threads spent waiting for this lock.

      Attachments

        Issue Links

          Activity

            People

              echobravo Ernest Burghardt
              jbarrett Jacob Barrett
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m