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/08/29 11:26:00 UTC

[jira] [Updated] (GEODE-7145) Geode native client PDX deadlock when not reading all data

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

Mario Ivanac updated GEODE-7145:
--------------------------------
    Attachment: pdx_deadlock.tgz

> Geode native client PDX deadlock when not reading all data
> ----------------------------------------------------------
>
>                 Key: GEODE-7145
>                 URL: https://issues.apache.org/jira/browse/GEODE-7145
>             Project: Geode
>          Issue Type: Improvement
>          Components: native client
>            Reporter: Mario Ivanac
>            Priority: Major
>         Attachments: pdx_deadlock.tgz
>
>
> A plausible thread deadlock in geode-native C++ library (versions 1.8 and 1.9) has been found. It seems to happen in the following circumstances:
>  * A reader program continuously reads objects in a region, objects deserialized with PDX.
>  * The reader program is NOT consuming all fields in the objects, so some information is left in the cache.
>  * PdxIgnoreUnreadFields is set to FALSE.
>  
> With previous setup, it has been observed that after around 20 seconds of first object read, the reader program gets stuck.
>  
> A program source that reproduces the problem is attached (pdx_deadlock.tgz). This program is based on geode’s native example (geode-native/examples/cpp/pdxserializable/) with some minor modifications.
>  
> Procedure
>  # Build pdx_deadlock program using cmake and copy binary to test machine.
>  # Use gfsh to create region with command: create region --name="custom_orders" --type=PARTITION
>  # Execute pdx_deadlock once in create mode to add just one order entry in region: ./pdx_deadlock <locator_host> <locator_port> create
>  # Execute pdx_deadlock in read loop mode with command: ./pdx_deadlock <locator_host> <locator_port>
>  # Check in output the order object is being read. In less than 30 seconds the deadlock shall happen, and iteration loop will not finish.
>  
> Additionally, if program is executed with these arguments:
> ./pdx_deadlock <locator_host> <locator_port> ignore-unread-fields
> It will set geode client cache factory configuration value PdxIgnoreUnreadFields to TRUE, and NO deadlock would occur, and the program will finish all iterations.
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.2#803003)