| Summary: | getStorageDomainsList() fails when LOCALFS connections are present | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Retired] oVirt | Reporter: | Adam Litke <alitke> | ||||
| Component: | vdsm | Assignee: | Mark Wu <wudxw> | ||||
| Status: | CLOSED UPSTREAM | QA Contact: | yeylon <yeylon> | ||||
| Severity: | unspecified | Docs Contact: | |||||
| Priority: | unspecified | ||||||
| Version: | unspecified | CC: | abaron, acathrow, bazulay, iheim, srevivo, wudxw, ykaul | ||||
| Target Milestone: | --- | ||||||
| Target Release: | --- | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Linux | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2012-05-11 13:05:42 UTC | Type: | --- | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Attachments: |
|
||||||
Created attachment 562042 [details]
Log capture during script run
Here is the vdsm.log that is generated when the designated test case steps are run.
(In reply to comment #1) > Created attachment 562042 [details] > Log capture during script run > > Here is the vdsm.log that is generated when the designated test case steps are > run. I might be missing something but all the calls in the log finish successfully... The problem doesn't manifest itself as an error (which may actually be part of the problem). If you look at the message timings for the three separate getStorageDomainsList() calls we have:
### 1: before calling connectStorageServer()
Thread-14::DEBUG::2012-02-14 14:32:49,378::lvm::379::OperationMutex::(_reloadvgs) Operation 'lvm reload operation' released the operation mutex
Thread-14::INFO::2012-02-14 14:32:49,379::logUtils::39::dispatcher::(wrapper) Run and protect: getStorageDomainsList, Return response: {'domlist': []}
### 2: after calling connectStorageServer()
Thread-16::DEBUG::2012-02-14 14:32:49,527::lvm::379::OperationMutex::(_reloadvgs) Operation 'lvm reload operation' released the operation mutex
Thread-16::INFO::2012-02-14 14:33:52,129::logUtils::39::dispatcher::(wrapper) Run and protect: getStorageDomainsList, Return response: {'domlist': []}
Not only does this one time out, if there were any StorageDomains on the connected storage, they would not be listed.
### 3: after calling disconnectStorageServer()
Thread-21::DEBUG::2012-02-14 14:33:52,372::lvm::379::OperationMutex::(_reloadvgs) Operation 'lvm reload operation' released the operation mutex
Thread-21::INFO::2012-02-14 14:33:52,373::logUtils::39::dispatcher::(wrapper) Run and protect: getStorageDomainsList, Return response: {'domlist': []}
Hi Adam, I can't reproduce this problem with vdsm-4.9.6-0.179.gitb457dab. Could you please verify that it still exists? If not, we can close it. This bug has been fixed. I can no longer reproduce it either. I suspect this was one manifestation of the python-abrt bug which was causing vdsm sub-processes to hang indefinitely. |
Description of problem: When working with LOCALFS storage, the getStorageDomainsList() API times out when a local directory is "connected". When no such directory is connected, the function completes normally. Version-Release number of selected component (if applicable): d3c24d083fb0542321bacf9faf149392bc395b78 How reproducible: Easy Steps to Reproduce: 1. Create a local directory on a vdsm host with the proper ownership (vdsm:kvm) and permissions (0775). 2. Run the following API commands from a python interpreter (substituting your path as needed): import sys sys.path.append('/usr/share/vdsm') import vdscli from storage.sd import LOCALFS_DOMAIN, DATA_DOMAIN def vdsOK(d): print d if d['status']['code']: raise Exception(str(d)) return d path = "/storagedomain" path_desc = "Default Local Storage" conn_id = 1 s = vdscli.connect() # With no connections this will return immediately vdsOK(s.getStorageDomainsList()) # Connect some local storage vdsOK(s.connectStorageServer(LOCALFS_DOMAIN, path_desc, [dict(id=conn_id, connection=path)])) # Now this times out vdsOK(s.getStorageDomainsList()) # Disconnect the localstorage vdsOK(s.disconnectStorageServer(LOCALFS_DOMAIN, BLANK_UUID, [dict(id=1, connection=path)])) # Returns immediately vdsOK(s.getStorageDomainsList()) Actual results: getStorageDomainsList() times out when called after connectStorageServer(). Expected results: getStorageDomainsList() should quickly return an empty list in all scenarios. (There are no storagedomains in the connected directory). Additional info: