the job of the poller is to check integrity of both sides of a vc and to tear
it down if it is no longer valid.
i have some code that illustrates doing this on my web site…
go to staff.qnx.com/~randy/qnx2
and look in the vc_check/ subdir
it is possible to get a half-ended vc if a node goes up and down without
the poller detecting it. one solution is to run the poller on each node in
standalone mode. or look at the vc_check/ stuff to see how you can walk the
task table and remove a vc.
Mike Schneider <Mike.Schneider@us.heidelberg.com> wrote:
Do you know how you are creating the vcses?
Anytime you have node to node communication a virtual circuit is created on
each side.
This can be just file access, queue access, explicit task send/receive, etc.
The majority of our vcs use, is using name_locate() to get a tid so we can
send a message to a specific task.
We also access queues on other nodes.
Whenever you do a name_locate() across the net, a vcs will be created on
each side.
Once you have finished with the vcs it should be removed using vc_release().
If you use name_locate() and then send to the tid, if the send fails you
should release the vcs and
relocate the task tid. We had a problem at one time because this wasn’t
being done.
This may be the problem your seeing. Maybe a failure has occured and
recovery includes relocating the task and not
clearing the previous vcs.
We’ve had other similar problems when nodes have been rebooted leaving open
vcses because of the way
the alive command was used in the sysinit files.
If this doesn’t help, maybe more info on your application would help.
ms…
Russ Bilbey <> russ@bilbey.com> > wrote in message
news:9ebf11$kq2$> 1@inn.qnx.com> …
Hi there,
we are running a 12-node QNX2 system in a ‘cluster’ configuration with
node
1 having overall control of the system. There are approximately 74 tasks
running on node 1 with around 50 tasks running on the other nodes. There
is
extensive inter-node communications and over a period of time one of the
tasks is generating excessive amounts of virtual circuits which eventually
eat up all available tasks and crash the system.
Should the OS be cleaning up these VC’s or should they be killed from
within
the application? Is there any way of killing these VC’s without crashing
the
task from which they are generated?
Any info on the creation/killing of VC’s would be appreciated.
Thanks,
Russ Bilbey
–
Randy Martin randy@qnx.com
Manager of FAE Group, North America
QNX Software Systems www.qnx.com
175 Terence Matthews Crescent, Kanata, Ontario, Canada K2M 1W8
Tel: 613-591-0931 Fax: 613-591-3579