From cfb53ffdc8a5e6f945ba53906ef997b1f5a19910 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 12 Nov 2010 09:19:31 -0800 Subject: [PATCH] Handle exceptions thrown when rolling back a version tag. --- lib/WebGUI/VersionTag.pm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/WebGUI/VersionTag.pm b/lib/WebGUI/VersionTag.pm index 03ac970ca..5f830554e 100644 --- a/lib/WebGUI/VersionTag.pm +++ b/lib/WebGUI/VersionTag.pm @@ -765,8 +765,11 @@ sub rollback { my $sth = $session->db->read("select asset.assetId, assetData.revisionDate from assetData left join asset using(assetId) where assetData.tagId = ? order by asset.lineage desc, assetData.revisionDate desc", [ $tagId ]); my $i18n = WebGUI::International->new($session, 'VersionTag'); REVISION: while (my ($id, $revisionDate) = $sth->array) { - my $revision = WebGUI::Asset->newById($session, $id, $revisionDate); - next REVISION unless $revision; + my $revision = eval { WebGUI::Asset->newById($session, $id, $revisionDate); }; + unless (defined $revision) { + $self->session->log->error("Asset $id $revisionDate could not be instanciated by version tag ".$self->getId.". Perhaps it is corrupt."); + next REVISION; + } $outputSub->(sprintf $i18n->get('Rolling back %s'), $revision->getTitle); $revision->purgeRevision; }