Hi all
I encountered few days ago a problem on my proxmox cluster because of too long uptime. When I try to migrate a VM or take a console, I got : UNABLE TO PARSE WORKER UPID '......' I found that it was du to the regexp contained in Tools.pm that do not allow 9 digits caracters for /proc/_PID_NUMBER_/state --> pstate value. I then modify that perl module like this : --- /usr/share/perl5/PVE/Tools_20140618.pm 2014-06-18 14:20:40.000000000 +0200 +++ /usr/share/perl5/PVE/Tools.pm 2014-06-24 12:37:49.000000000 +0200 @@ -16,6 +16,7 @@ use Digest::SHA; use Text::ParseWords; use String::ShellQuote; +use Math::BigInt; # Fortunately this module is available - let's load it ! our @EXPORT_OK = qw( lock_file @@ -758,11 +759,11 @@ my $filename; # "UPID:$node:$pid:$pstart:$startime:$dtype:$id:$user" - if ($upid =~ m/^UPID:([a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?):([0-9A-Fa-f]{8}):([0-9A-Fa-f]{8}):([0-9A-Fa-f]{8}):([^:s]+):([^:s]*):([^:s]+):$/) { + if ($upid =~ m/^UPID:([a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?):([0-9A-Fa-f]{8,16}):([0-9A-Fa-f]{8,16}):([0-9A-Fa-f]{8,16}):([^:s]+):([^:s]*):([^:s]+):$/) { $res->{node} = $1; - $res->{pid} = hex($3); - $res->{pstart} = hex($4); - $res->{starttime} = hex($5); + $res->{pid} = Math::BigInt->from_hex($3); + $res->{pstart} = Math::BigInt->from_hex($4); + $res->{starttime} = Math::BigInt->from_hex($5); $res->{type} = $6; $res->{id} = $7; $res->{user} = $8; Note that I need to load Math::BigInt perl module. If you do not do that, you'll get that warning : _HEXADECIMAL NUMBER > 0XFFFFFFFF NON-PORTABLE AT TOOLS.PM LINE ...._ But it works. The problem is that it can be intercepted by an eval {} and cause an exception. I modify too the pvemanagerlib.js file because it use the same regexp than previous perl module. --- /usr/share/pve-manager/ext4/pvemanagerlib_20140618.js 2014-06-18 14:24:26.000000000 +0200 +++ /usr/share/pve-manager/ext4/pvemanagerlib.js 2014-06-24 12:36:52.000000000 +0200 @@ -529,7 +529,7 @@ parse_task_upid: function(upid) { var task = {}; - var res = upid.match(/^UPID:(S+):([0-9A-Fa-f]{8}):([0-9A-Fa-f]{8}):([0-9A-Fa-f]{8}):([^:s]+):([^:s]*):([^:s]+):$/); + var res = upid.match(/^UPID:(S+):([0-9A-Fa-f]{8,16}):([0-9A-Fa-f]{8,16}):([0-9A-Fa-f]{8,16}):([^:s]+):([^:s]*):([^:s]+):$/); if (!res) { throw "unable to parse upid '" + upid + "'"; } Hope this helps. Cheers. -- -------------------------
<<attachment: vcard.vcf>>
_______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel