You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Mario Ivanac (Jira)" <ji...@apache.org> on 2019/11/11 11:33:00 UTC

[jira] [Assigned] (GEODE-6755) AbstractUpdateOperation.doPutOrCreate calls basicUpdate twice

     [ https://issues.apache.org/jira/browse/GEODE-6755?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mario Ivanac reassigned GEODE-6755:
-----------------------------------

    Assignee:     (was: Mario Ivanac)

> AbstractUpdateOperation.doPutOrCreate calls basicUpdate twice
> -------------------------------------------------------------
>
>                 Key: GEODE-6755
>                 URL: https://issues.apache.org/jira/browse/GEODE-6755
>             Project: Geode
>          Issue Type: Improvement
>          Components: core
>            Reporter: Darrel Schneider
>            Priority: Major
>              Labels: needs-review, performance, pull-request-available
>          Time Spent: 2h 40m
>  Remaining Estimate: 0h
>
> On a partitioned region put benchmark (with redundancy), I noticed that AbstractUpdateOperation.doPutOrCreate calls basicUpdate twice. The first time is to see if it can be a create. If it is then it is done. But in the case of an update this first call "fails" and we then call basicUpdate again this time telling it to do an update instead of a create.
> It seems like this code could be optimized. In my benchmark most of the puts are updates. In that case I see the first call to basicUpdate accounting for 3% of all the object allocations. These are all garbage and end up being done again when we call basicUpdate the second time. In addition to these allocations, that first call also takes some amount of cpu. I think the first calls gets all the way down to having the entry synced and then figures out it exists and "fails" since it is not a create.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)