devcartel / pyrfa

Open sourced Python API for Refinitiv (Thomson Reuters) Enterprise Platform.
http://devcartel.com/pyrfa
MIT License
50 stars 15 forks source link

Segmentation fault when requesting _SERVER_LIST #34

Closed kodeaway closed 6 years ago

kodeaway commented 6 years ago

Code: print (p.getSymbolList("_SERVER_LIST")

Gives a Segmentation Fault.

Attaching the GDB output (snapshots) segfaultgdb1 segfaultgdb2 segfaultgdb3 segfaultgdb4

wiwat-tharateeraparb commented 6 years ago

What's "_SERVER_LIST"?

kodeaway commented 6 years ago

From the ADH manual

A new capability is provided in this release using which client applications can request a list of available servers and capabilities (domains) within each service, and then can use that list to request a list of symbols which are contained within the cache list of each server. To request the list of available servers and capabilities, client applications can request the pseudo-Symbol List _SERVER_LIST within each service which will return a list of all servers and their provided domains in the format of _CACHE_LIST.serverId.domain. From that list, client applications can then spawn off individual requests for the servers and domains of interest using the pseudo-Symbol List names returned within _SERVER_LIST. Domain is optional and defaults to 6 (Market Price). The response for each cache list request will include a list of all active items of the requested domain within that server’s cache list, including items which are not being cached. Server lists and cache lists may be requested as streaming or non-streaming (snapshot). For streaming requests, update messages will be sent on the streams to update (add and delete) the list of available servers and domains, and the list of symbols within each server cache list, as they change. When the ADH is running in a source mirroring pair, failover will trigger a change in server ID and any cache list streams associated with the original server ID will be closed and the server list stream will also be updated accordingly upon failover. Clients will need to issue new cache list requests to the new server ID following failover. This feature is supported for both interactive and non-interactive services, and is supported for both RSSL (Symbol List) and SSL 4.5 (Criteria) clients.

wiwat-tharateeraparb commented 6 years ago

I tried that symbol name and we are able to reproduce the core dump. However, this core dump is random. When it passes, we got:

_CACHE_LIST.260.5
_CACHE_LIST.260.6

as a result. I am looking into this.

wiwat-tharateeraparb commented 6 years ago

Just release 8.2.2 today which fixes this error related to _SERVER_LIST. Please update with:

> python -m pip install -U pyrfa

Or download from https://pypi.python.org/pypi/pyrfa/8.2.2

wiwat-tharateeraparb commented 6 years ago

Fixed in 8.2.2