Tue 26 May 2009 06:06:23 AM UTC, original submission:
I use Ubuntu 9.04 on the client and Ubuntu 8.10 on the server, but the versions are not compatibles :
$ rdiff-backup test rom-eeebox::test
/var/lib/python-support/python2.6/rdiff_backup/SetConnections.py:148: DeprecationWarning: os.popen2 is deprecated. Use the subprocess module.
stdin, stdout = os.popen2(remote_cmd)
Warning: Local version 1.2.7 does not match remote version 1.1.16.
Exception '
Warning Security Violation!
Bad request for function: rpath.make_file_dict
with arguments: ['test']
' raised of class '<class 'rdiff_backup.Security.Violation'>':
File "/var/lib/python-support/python2.6/rdiff_backup/Main.py", line 304, in error_check_Main
try: Main(arglist)
File "/var/lib/python-support/python2.6/rdiff_backup/Main.py", line 321, in Main
rps = map(SetConnections.cmdpair2rp, cmdpairs)
File "/var/lib/python-support/python2.6/rdiff_backup/SetConnections.py", line 78, in cmdpair2rp
return rpath.RPath(conn, filename).normalize()
File "/var/lib/python-support/python2.6/rdiff_backup/rpath.py", line 884, in _init_
else: self.setdata()
File "/var/lib/python-support/python2.6/rdiff_backup/rpath.py", line 908, in setdata
self.data = self.conn.rpath.make_file_dict(self.path)
File "/var/lib/python-support/python2.6/rdiff_backup/connection.py", line 450, in _call_
return apply(self.connection.reval, (self.name,) + args)
File "/var/lib/python-support/python2.6/rdiff_backup/connection.py", line 370, in reval
if isinstance(result, Exception): raise result
Traceback (most recent call last):
File "/usr/bin/rdiff-backup", line 30, in <module>
rdiff_backup.Main.error_check_Main(sys.argv[1:])
File "/var/lib/python-support/python2.6/rdiff_backup/Main.py", line 304, in error_check_Main
try: Main(arglist)
File "/var/lib/python-support/python2.6/rdiff_backup/Main.py", line 321, in Main
rps = map(SetConnections.cmdpair2rp, cmdpairs)
File "/var/lib/python-support/python2.6/rdiff_backup/SetConnections.py", line 78, in cmdpair2rp
return rpath.RPath(conn, filename).normalize()
File "/var/lib/python-support/python2.6/rdiff_backup/rpath.py", line 884, in _init_
else: self.setdata()
File "/var/lib/python-support/python2.6/rdiff_backup/rpath.py", line 908, in setdata
self.data = self.conn.rpath.make_file_dict(self.path)
File "/var/lib/python-support/python2.6/rdiff_backup/connection.py", line 450, in _call_
return apply(self.connection.reval, (self.name,) + args)
File "/var/lib/python-support/python2.6/rdiff_backup/connection.py", line 370, in reval
if isinstance(result, Exception): raise result
rdiff_backup.Security.Violation:
Warning Security Violation!
Bad request for function: rpath.make_file_dict
with arguments: ['test']
Fatal Error: Lost connection to the remote system
Even if I understand the need of adding new features or modifying the protocol, this non compatibility is not acceptable for me, especially with 2 versions separated by 6 months !
A backup manager must work with heterogeonous system, so a minor version of the program should not break the compatibility.
To avoid the problem, the client and server should negociate the protocol version, and the new versions should be able to switch to an older version of the protocol automatically…
The client and the server
|