Status: New
Owner: [email protected]

New issue 665 by [email protected]: RpcCallJobqueueUpdate does not virtualize the file path
http://code.google.com/p/ganeti/issues/detail?id=665

What steps will reproduce the problem?
1. Set up a vcluster with a couple of nodes.
2. Run ./cmd 'gnt-cluster verify'
3. Get lots of error messages about ssh problems:

Thu Jan  9 14:10:36 2014 * Verifying node status
Thu Jan 9 14:10:36 2014 - ERROR: node node1: ssh communication with node 'node11': ssh problem: ssh_exchange_identification: Connection closed by remote host\'r\n Thu Jan 9 14:10:36 2014 - ERROR: node node1: ssh communication with node 'node10': ssh problem: ssh_exchange_identification: Connection closed by remote host\'r\n Thu Jan 9 14:10:36 2014 - ERROR: node node1: ssh communication with node 'node20': ssh problem: ssh_exchange_identification: Connection closed by remote host\'r\n Thu Jan 9 14:10:36 2014 - ERROR: node node1: ssh communication with node 'node22': ssh problem: ssh_exchange_identification: Connection closed by remote host\'r\n Thu Jan 9 14:10:36 2014 - ERROR: node node1: ssh communication with node 'node3': ssh problem: ssh_exchange_identification: Connection closed by remote host\'r\n
...

Digging through the code I found out that the problem is in Rpc.hs RpcCallJobqueueUpdate. The path in the variable 'file_name' of the RPC call needs to be virtualized, but this is missing here.

For comparison, the virtualization in the python code is done in jqueue.py, CallJqUpdate:

virt_file_name = vcluster.MakeVirtualPath(file_name)

So basically, the functionality of "MakeVirtualPath" needs to be implemented in Haskell.

Please use labels and text to provide additional information.

To verify, that it is indeed this call, I logged the jobqueue_update RPC calls in the backend and marked the haskell ones with "ZZZ". Excerpt from node2/var/log/ganeti/node-daemon.log:

2014-01-09 13:56:37,764: ganeti-noded pid=30803 ERROR XXX backend file_name before /###-VIRTUAL-PATH-###,/var/lib/ganeti/queue/job-2 2014-01-09 13:56:37,764: ganeti-noded pid=30803 ERROR XXX backend file_name after /srv/ganeti/vcluster/node2/var/lib/ganeti/queue/job-2 2014-01-09 13:56:37,766: ganeti-noded pid=30803 INFO 192.0.2.11:35877 POST /jobqueue_update HTTP/1.1 200 2014-01-09 13:56:40,742: ganeti-noded pid=30867 ERROR XXX backend file_name before ZZZ/srv/ganeti/vcluster/node1/var/lib/ganeti/queue/serialZZZ
2014-01-09 13:56:40,742: ganeti-noded pid=30867 ERROR Error in RPC call
Traceback (most recent call last):
File "/usr/local/share/ganeti/2.11/ganeti/server/noded.py", line 182, in HandleRequest
    result = (True, method(serializer.LoadJson(req.request_body)))
File "/usr/local/share/ganeti/2.11/ganeti/server/noded.py", line 103, in wrapper
    return fn(*args, **kwargs)
File "/usr/local/share/ganeti/2.11/ganeti/server/noded.py", line 1055, in perspective_jobqueue_update
    return backend.JobQueueUpdate(file_name, content)
File "/usr/local/share/ganeti/2.11/ganeti/backend.py", line 3503, in JobQueueUpdate
    file_name = vcluster.LocalizeVirtualPath(file_name)
File "/usr/local/share/ganeti/2.11/ganeti/vcluster.py", line 260, in LocalizeVirtualPath
    assert os.path.isabs(path)
AssertionError
2014-01-09 13:56:40,745: ganeti-noded pid=30867 INFO 192.0.2.11:35883 POST /jobqueue_update HTTP/1.1 200 2014-01-09 13:56:40,885: ganeti-noded pid=30868 ERROR XXX backend file_name before ZZZ/srv/ganeti/vcluster/node1/var/lib/ganeti/queue/job-3ZZZ
2014-01-09 13:56:40,886: ganeti-noded pid=30868 ERROR Error in RPC call
Traceback (most recent call last):
File "/usr/local/share/ganeti/2.11/ganeti/server/noded.py", line 182, in HandleRequest
    result = (True, method(serializer.LoadJson(req.request_body)))
File "/usr/local/share/ganeti/2.11/ganeti/server/noded.py", line 103, in wrapper
    return fn(*args, **kwargs)
File "/usr/local/share/ganeti/2.11/ganeti/server/noded.py", line 1055, in perspective_jobqueue_update
    return backend.JobQueueUpdate(file_name, content)
File "/usr/local/share/ganeti/2.11/ganeti/backend.py", line 3503, in JobQueueUpdate
    file_name = vcluster.LocalizeVirtualPath(file_name)
File "/usr/local/share/ganeti/2.11/ganeti/vcluster.py", line 260, in LocalizeVirtualPath
    assert os.path.isabs(path)
AssertionError



--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

Reply via email to