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)