Kirk Augustin | 8 Apr 2010 01:23
Picon
Favicon

Re: Locking in Pegasus

Each class only has one provider, so it is not unreasonable for a provider to only accept one request at a time.
A provider is not required to do this, but it is a simple way to prevent data corruption.
And making concurrent requests is not really going to speed things up much anyway.

From: "Kumpf, Roger" <roger.kumpf <at> hp.com>
To: "Dodgson, David S" <David.Dodgson <at> unisys.com>; "pegasus-l <at> openpegasus.org" <pegasus-l <at> openpegasus.org>
Sent: Wed, April 7, 2010 3:01:35 PM
Subject: RE: Locking in Pegasus

David,

 

I think the lock you are referring to is in the CIM_DiskDrive provider, not the Pegasus CIM Server itself.  You may want to consult with the provider vendor.

 

-Roger

 

From: Dodgson, David S [mailto:David.Dodgson <at> unisys.com]
Sent: Wednesday, April 07, 2010 2:54 PM
To: pegasus-l <at> openpegasus.org
Subject: Locking in Pegasus

 

Hello,

 

I have a service that runs on my provider system and monitors the state of my devices.  It calls Pegasus locally through CIM Client to make updates when needed.  At the same time, an SMI client running on a separate system might connect to perform a management function on one of my devices. 

 

It appears that Pegasus is setting a lock when the function request arrives from the client.  This blocks the service when it tries to make its updates.  Furthermore, it appears that this lock is on the entire class, not just an individual instance.  For example, if the function is called for one disk (RequestStateChange in CIM_DiskDrive), the service is blocked from making changes on any disk drive.  Is this correct?

 

I sometimes run into deadlock situations.  This seems to occur because the service reserves the device to make its updates and then calls Pegasus and gets blocked on the lock; while the SMI client calls the management function through Pegasus, sets the lock, but then can't perform the function because the device is reserved.  Eventually the function call times out.

 

Is there some way to monitor the state of the lock to see if it is already set?  Or, is there some way to have a call return an error immediately rather than blocking?  If so, I would have my service release the device and retry later.  If not, could someone point me to where the lock is set so I could at least see what's happening?

 

Thanks in advance for any information.

 

_______________________________________

David Dodgson                        Unisys Corp.

david.dodgson <at> unisys.com

 

THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY MATERIAL and is thus for use only by the intended recipient. If you received this in error, please contact the sender and delete the e-mail and its attachments from all computers.

 

 

 

 


Gmane