ISISComputingGroup / ISISComputingGroup/IBEX

genie_python/CaChannel: Error creating multiple channels on multiple threads

Open
#5,830 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
6
Forks
2
Avg merge
16h 40m
Merged PRs (30d)
2

Description

We believe that the genie python code is doing the following in ca channel (although this is a recreation of the path through get_chan). We we run it we 100 threads on NDHSpare70 it generates a connection error, with 10 threads it is fine:

```
from CaChannel import ca, CaChannel, CaChannelException
from threading import Event
from concurrent.futures import ThreadPoolExecutor

name = "TE:SPARE70:CS:BLOCKSERVER:SERVER_STATUS"

def test(index):
def putCB(epics_args, user_args):
user_args[0].set()

event = Event()
chan = CaChannel(name)
#CaChannelWrapper.installHandlers(chan)
chan.setTimeout(3)
chan.search_and_connect(None, putCB, event)

interval = 0.1
count = 0
timeout = 3
while not event.wait(interval) and timeout < interval * count:
chan.pend_io(interval)
count +=1

if not event.is_set():
print("Connect Fail")
else:
print(index)

def run_me(threads, pre_thread=1):

THREADPOOL = ThreadPoolExecutor(max_workers=threads)

for index in range(threads*pre_thread):
THREADPOOL.submit(test, index)

THREADPOOL.shutdown(wait=True)
```

Is this our bug or should we communicate it to the CaChannel author.

Output is:

```
In [17]: run_me(100)
Connect FailConnect FailConnect Fail

Connect FailConnect Fail
Connect FailConnect FailConnect FailConnect Fail
Connect FailConnect FailConnect Fail
Connect FailConnect FailConnect FailConnect Fail
Connect FailConnect FailConnect FailConnect FailConnect FailConnect FailConnect
FailConnect Fail

Connect FailConnect FailConnect FailConnect Fail

Connect Fail
Connect Fail

Connect Fail

Connect Fail

Connect Fail

Connect FailConnect FailConnect FailConnect FailConnect FailConnect Fail
Connect FailConnect Fail
Connect FailConnect Fail
Connect Fail

Connect FailConnect FailConnect Fail

Connect FailConnect FailConnect FailConnect FailConnect FailConnect Fail
Connect FailConnect FailConnect FailConnect FailConnect Fail

Connect FailConnect FailConnect FailConnect FailConnect FailConnect FailConnect
FailConnect Fail
Connect Fail
Connect Fail

Connect FailConnect FailConnect Fail

Connect FailConnect Fail
Connect Fail
Connect FailConnect Fail

Connect Fail

Connect Fail

Connect Fail

Connect FailConnect FailConnect FailConnect FailConnect FailConnect FailConnect
Fail
Connect FailConnect Fail
Connect FailConnect FailConnect Fail

Connect Fail

Connect Fail

Connect FailConnect FailConnect Fail

Connect FailConnect Fail

Connect Fail

Connect Fail
```

One time we got the error:
```
In [18]: Context: " Source File: c:\instrument\apps\epics\base\master\mod
ules\ca\src\client\cac.cpp line 1237
"
Current Time: Tue Oct 20 2020 16:33:13.603591416
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.