backend/server/rhnServer/server_packages.py | 10 ++++++----
backend/server/rhnServer/server_solarispatches.py | 2 ++
2 files changed, 8 insertions(+), 4 deletions(-)
New commits:
commit b7d8b3172eb76cc3ed03f2adba43e5b8f00d8658
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Fri Mar 16 13:14:05 2012 +0100
802688 - Forcing empty strings to be Nones.
Addressing
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/spacewalk/server/apacheRequest.py", line 122, in call_function
response = apply(func, params)
File "/usr/share/rhn/server/handlers/xmlrpc/registration.py", line 924, in update_packages
server.save_packages()
File "/usr/lib/python2.6/site-packages/spacewalk/server/rhnServer/server_wrapper.py", line 75, in save_packages
ret = self.save_packages_byid(self.server["id"], schedule=schedule)
File "/usr/lib/python2.6/site-packages/spacewalk/server/rhnServer/server_packages.py", line 240, in save_packages_byid
update_errata_cache(sysid)
File "/usr/lib/python2.6/site-packages/spacewalk/server/rhnServer/server_packages.py", line 321, in update_errata_cache
update_needed_cache(server_id)
File "/usr/lib/python2.6/site-packages/spacewalk/server/rhnSQL/driver_postgresql.py", line 115, in __call__
result = Function.__call__(self, *args)
File "/usr/lib/python2.6/site-packages/spacewalk/server/rhnSQL/driver_postgresql.py", line 92, in __call__
raise sql_base.SQLError(error_code, e.pgerror, e)
SQLError: (99999, 'ERROR: invalid input syntax for integer: "None"\\nCONTEXT: PL/pgSQL function "vercmp" line 14 at assignment\\nPL/pgSQL function "evr_t_compare" line 2 at RETURN\\nPL/pgSQL function "evr_t_gt" line 2 at RETURN\\nPL/pgSQL function "evr_t_larger" line 2 at IF\\nSQL statement "insert into rhnServerNeededCache (server_id, errata_id, package_id) (select distinct server_id, errata_id, package_id from rhnServerNeededView where server_id = $1 )"\\nPL/pgSQL function "update_needed_cache" line 4 at SQL statement\\n', DataError('invalid input syntax for integer: "None"\\nCONTEXT: PL/pgSQL function "vercmp" line 14 at assignment\\nPL/pgSQL function "evr_t_compare" line 2 at RETURN\\nPL/pgSQL function "evr_t_gt" line 2 at RETURN\\nPL/pgSQL function "evr_t_larger" line 2 at IF\\nSQL statement "insert into rhnServerNeededCache (server_id, errata_id, package_id) (select distinct server_id, errata_id, package_id from rhnServerNeededView where server_id = $1 )"\\nPL/pgSQL function "update_needed_cache" line 4 at SQL statement\\n',))
diff --git a/backend/server/rhnServer/server_solarispatches.py b/backend/server/rhnServer/server_solarispatches.py
index 92f6afb..82b2f53 100644
--- a/backend/server/rhnServer/server_solarispatches.py
+++ b/backend/server/rhnServer/server_solarispatches.py
@@ -52,6 +52,8 @@ class DBPatch(object):
"""[constructor] This method looks up the patch in the databse, the
'id' field is the rhnPackage id. The 'id' field will be None if the
patch does not exist in the database"""
+ if patch['epoch'] == '':
+ patch['epoch'] == None
self.id = get_package_id(patch)
# solaris patches server class -------------------------------------------
commit 788ed1011b832297571ea5f41f37cb2797eb7f5d
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Fri Mar 16 11:19:09 2012 +0100
802688 - Forcing empty strings to be Nones.
Addressing
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/spacewalk/server/apacheRequest.py", line 122, in call_function
response = apply(func, params)
File "/usr/share/rhn/server/handlers/xmlrpc/registration.py", line 923, in update_packages
server.add_package(package)
File "/usr/lib/python2.6/site-packages/spacewalk/server/rhnServer/server_wrapper.py", line 62, in add_package
SolarisPatches.add_patch(self, self.server.get("id"), entry)
File "/usr/lib/python2.6/site-packages/spacewalk/server/rhnServer/server_solarispatches.py", line 89, in add_patch
self._patches[sysid].append(DBPatch(patch))
File "/usr/lib/python2.6/site-packages/spacewalk/server/rhnServer/server_solarispatches.py", line 55, in __init__
self.id = get_package_id(patch)
File "/usr/lib/python2.6/site-packages/spacewalk/server/rhnServer/server_solarispatches.py", line 39, in get_packa
ge_id
handle.execute(name=p.n, epoch=p.e, ver=p.v, rel=p.r, arch=p.a)
File "/usr/lib/python2.6/site-packages/spacewalk/server/rhnSQL/sql_base.py", line 163, in execute
return apply(self._execute_wrapper, (self._execute, ) + p, kw)
File "/usr/lib/python2.6/site-packages/spacewalk/server/rhnSQL/driver_postgresql.py", line 282, in _execute_wrappe
r
retval = apply(function, p, kw)
File "/usr/lib/python2.6/site-packages/spacewalk/server/rhnSQL/sql_base.py", line 217, in _execute
return self._execute_(args, kwargs)
File "/usr/lib/python2.6/site-packages/spacewalk/server/rhnSQL/driver_postgresql.py", line 295, in _execute_
self._real_cursor.execute(self.sql, params)
IntegrityError: new row for relation "rhnpackageevr" violates check constraint "vn_rhnpackageevr_epoch"
CONTEXT: Error occurred on dblink connection named "unnamed": could not execute command.
SQL statement "SELECT dblink_exec('at_conn', $1 , true)"
PL/pgSQL function "pg_dblink_exec" line 4 at PERFORM
SQL statement "SELECT pg_dblink_exec( 'insert into rhnPackageEVR(id, epoch, version, release, evr) values (' || $1
|| ', ' || coalesce(quote_literal( $2 ), 'NULL') || ', ' || coalesce(quote_literal( $3 ), 'NULL') || ', ' || coalesce(quote_literal( $4 ), 'NULL') ||
', ' || evr_t(coalesce(quote_literal( $2 ), 'NULL'), coalesce(quote_literal( $3 ), 'NULL'), coalesce(quote_literal( $4 ), 'NULL')) || ')' )"
PL/pgSQL function "lookup_evr" line 14 at PERFORM
diff --git a/backend/server/rhnServer/server_packages.py b/backend/server/rhnServer/server_packages.py
index a738f34..31545d1 100644
--- a/backend/server/rhnServer/server_packages.py
+++ b/backend/server/rhnServer/server_packages.py
@@ -44,15 +44,17 @@ class dbPackage:
return None
if not pdict.has_key('arch') or pdict['arch'] is None:
pdict['arch'] = ""
- if string.lower(str(pdict['epoch'])) == "(none)" or pdict['epoch'] == None:
- pdict['epoch'] = ""
- for k in ('name', 'version', 'release', 'epoch', 'arch'):
+ if string.lower(str(pdict['epoch'])) == "(none)" or pdict['epoch'] == "" or pdict['epoch'] == None:
+ pdict['epoch'] = None
+ else:
+ pdict['epoch'] = str(pdict['epoch'])
+ for k in ('name', 'version', 'release', 'arch'):
if pdict[k] == None:
return None
self.n = str(pdict['name'])
self.v = str(pdict['version'])
self.r = str(pdict['release'])
- self.e = str(pdict['epoch'])
+ self.e = pdict['epoch']
self.a = str(pdict['arch'])
if pdict.has_key('installtime'):
self.installtime = pdict['installtime']