From ebb6134c2dffe53a6511ec6759225b20591e6f9d Mon Sep 17 00:00:00 2001 From: JT Smith Date: Fri, 25 Sep 2009 22:50:59 -0500 Subject: [PATCH] bug fixes --- lib/WebGUI/Asset.pm | 6 +- lib/WebGUI/Asset/File.pm | 6 +- lib/WebGUI/Asset/File/Image.pm | 4 +- lib/WebGUI/Asset/File/ZipArchive.pm | 4 +- lib/WebGUI/Asset/Post.pm | 2 +- lib/WebGUI/Asset/Post/Thread.pm | 4 +- lib/WebGUI/Asset/Shortcut.pm | 6 +- lib/WebGUI/Asset/Snippet.pm | 8 +- lib/WebGUI/Asset/Wobject/Article.pm | 6 +- lib/WebGUI/Asset/Wobject/Collaboration.pm | 10 +- lib/WebGUI/Asset/Wobject/Folder.pm | 6 +- lib/WebGUI/Asset/Wobject/HttpProxy.pm | 21 ++- lib/WebGUI/Asset/Wobject/Layout.pm | 4 +- lib/WebGUI/Asset/Wobject/Matrix.pm | 8 +- lib/WebGUI/Asset/Wobject/MessageBoard.pm | 6 +- lib/WebGUI/Asset/Wobject/MultiSearch.pm | 6 +- lib/WebGUI/Asset/Wobject/SQLReport.pm | 6 +- lib/WebGUI/Asset/Wobject/SyndicatedContent.pm | 10 +- lib/WebGUI/Asset/Wobject/Thingy.pm | 4 +- lib/WebGUI/AssetLineage.pm | 7 +- lib/WebGUI/Group.pm | 8 +- lib/WebGUI/Operation/Cache.pm | 2 +- lib/WebGUI/Operation/Settings.pm | 2 +- lib/WebGUI/Operation/Statistics.pm | 4 +- lib/WebGUI/User.pm | 6 +- sbin/preload.exclude.example | 1 - sbin/testmc.pl | 141 ------------------ 27 files changed, 84 insertions(+), 214 deletions(-) delete mode 100644 sbin/testmc.pl diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index 3c81459f3..c61a95efc 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -1777,7 +1777,7 @@ sub new { return undef unless $revisionDate; } - my $properties = $session->cache->get(["asset",$assetId,$revisionDate]); + my $properties = eval{$session->cache->get(["asset",$assetId,$revisionDate])}; if (exists $properties->{assetId}) { # got properties from cache } @@ -1787,7 +1787,7 @@ sub new { $session->errorHandler->error("Asset $assetId $class $revisionDate is missing properties. Consult your database tables for corruption. "); return undef; } - $cache->set($properties,60*60*24); + eval{$session->cache->set(["asset",$assetId,$revisionDate], $properties, 60*60*24)}; } if (defined $properties) { my $object = { _session=>$session, _properties => $properties }; @@ -2377,7 +2377,7 @@ sub purgeCache { $stow->delete('assetLineage'); $stow->delete('assetClass'); $stow->delete('assetRevision'); - $self->session->cache->delete(["asset",$self->getId,$self->get("revisionDate")]); + eval{$self->session->cache->delete(["asset",$self->getId,$self->get("revisionDate")])}; } diff --git a/lib/WebGUI/Asset/File.pm b/lib/WebGUI/Asset/File.pm index 260072765..19b5410b9 100644 --- a/lib/WebGUI/Asset/File.pm +++ b/lib/WebGUI/Asset/File.pm @@ -447,7 +447,7 @@ Extends the master method to clear the view cache. sub purgeCache { my $self = shift; - $self->session->cache->delete("view_".$self->getId); + eval{$self->session->cache->delete("view_".$self->getId)}; $self->SUPER::purgeCache; } @@ -607,7 +607,7 @@ Generate the view method for the Asset, and handle caching. sub view { my $self = shift; if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) { - my $out = $self->session->cache->get("view_".$self->getId); + my $out = eval{$self->session->cache->get("view_".$self->getId)}; return $out if $out; } my %var = %{$self->get}; @@ -617,7 +617,7 @@ sub view { $var{fileSize} = formatBytes($self->get("assetSize")); my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate}); if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) { - $self->session->cache->set("view_".$self->getId, $out, $self->get("cacheTimeout")); + eval{$self->session->cache->set("view_".$self->getId, $out, $self->get("cacheTimeout"))}; } return $out; } diff --git a/lib/WebGUI/Asset/File/Image.pm b/lib/WebGUI/Asset/File/Image.pm index 153896865..711ae6b4c 100644 --- a/lib/WebGUI/Asset/File/Image.pm +++ b/lib/WebGUI/Asset/File/Image.pm @@ -224,7 +224,7 @@ sub view { my $self = shift; my $cache = $self->session->cache; if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) { - my $out = $cache->get("view_".$self->getId); + my $out = eval{$cache->get("view_".$self->getId)}; return $out if $out; } my %var = %{$self->get}; @@ -248,7 +248,7 @@ sub view { my $form = $self->session->form; my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate}); if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) { - $cache->set("view_".$self->getId, $out, $self->get("cacheTimeout")); + eval{$cache->set("view_".$self->getId, $out, $self->get("cacheTimeout"))}; } return $out; } diff --git a/lib/WebGUI/Asset/File/ZipArchive.pm b/lib/WebGUI/Asset/File/ZipArchive.pm index 0a4e44553..9fbca6fd7 100644 --- a/lib/WebGUI/Asset/File/ZipArchive.pm +++ b/lib/WebGUI/Asset/File/ZipArchive.pm @@ -222,7 +222,7 @@ sub view { my $self = shift; my $cache = $self->session->cache; if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) { - my $out = $cache->get("view_".$self->getId); + my $out = eval{$cache->get("view_".$self->getId)}; return $out if $out; } my %var = %{$self->get}; @@ -245,7 +245,7 @@ sub view { $var{noFileSpecified} = $i18n->get('noFileSpecified'); my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate}); if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) { - $cache->set("view_".$self->getId, $out, $self->get("cacheTimeout")); + eval{$cache->set("view_".$self->getId, $out, $self->get("cacheTimeout"))}; } return $out; } diff --git a/lib/WebGUI/Asset/Post.pm b/lib/WebGUI/Asset/Post.pm index 565301fad..4f23e02fe 100644 --- a/lib/WebGUI/Asset/Post.pm +++ b/lib/WebGUI/Asset/Post.pm @@ -1187,7 +1187,7 @@ Extend the base class to handle caching. sub purgeCache { my $self = shift; - $self->session->cache->delete("view_".$self->getThread->getId) if ($self->getThread); + eval{$self->session->cache->delete("view_".$self->getThread->getId)} if ($self->getThread); $self->SUPER::purgeCache; } diff --git a/lib/WebGUI/Asset/Post/Thread.pm b/lib/WebGUI/Asset/Post/Thread.pm index 5388754f5..02f8dd9c1 100644 --- a/lib/WebGUI/Asset/Post/Thread.pm +++ b/lib/WebGUI/Asset/Post/Thread.pm @@ -1027,7 +1027,7 @@ sub view { $self->incrementViews unless ($self->session->form->process("func") eq 'rate'); my $cache = $self->session->cache; if ($self->session->user->isVisitor && !$self->session->form->process("layout")) { - my $out = $cache->get("view_".$self->getId); + my $out = eval{$cache->get("view_".$self->getId)}; return $out if $out; } $self->session->scratch->set("discussionLayout",$self->session->form->process("layout")) if ($self->session->form->process("layout")); @@ -1134,7 +1134,7 @@ sub view { my $out = $self->processTemplate($var,undef,$self->{_viewTemplate}); if ($self->session->user->isVisitor && !$self->session->form->process("layout")) { - $cache->set("view_".$self->getId, $out, $self->getThread->getParent->get("visitorCacheTimeout")); + eval{$cache->set("view_".$self->getId, $out, $self->getThread->getParent->get("visitorCacheTimeout"))}; } return $out; } diff --git a/lib/WebGUI/Asset/Shortcut.pm b/lib/WebGUI/Asset/Shortcut.pm index 68c0e00ed..9b0f6edc0 100644 --- a/lib/WebGUI/Asset/Shortcut.pm +++ b/lib/WebGUI/Asset/Shortcut.pm @@ -484,7 +484,7 @@ sub getOverrides { my $cache = $session->cache; my $u = WebGUI::User->new($self->session, $self->discernUserId); - my $overridesRef = $cache->get($self->_overridesCacheTag); + my $overridesRef = eval{$cache->get($self->_overridesCacheTag)}; ##If admin mode is not on, and the cache is valid, and not expired, and the user object was not updated, ##return the cached value. if ( ! $session->var->isAdminOn @@ -532,7 +532,7 @@ sub getOverrides { } } $overrides{userLastUpdated} = $session->user->get('lastUpdated'); - $cache->set($self->_overridesCacheTag, \%overrides, 60*60); + eval{$cache->set($self->_overridesCacheTag, \%overrides, 60*60)}; $overridesRef = \%overrides; return %{ $overridesRef }; } @@ -879,7 +879,7 @@ Delete any cached overrides. sub uncacheOverrides { my $self = shift; - $self->session->cache->delete($self->_overridesCacheTag); + eval{$self->session->cache->delete($self->_overridesCacheTag)}; } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/Snippet.pm b/lib/WebGUI/Asset/Snippet.pm index dd9b6e68a..e6e6fbded 100644 --- a/lib/WebGUI/Asset/Snippet.pm +++ b/lib/WebGUI/Asset/Snippet.pm @@ -251,8 +251,10 @@ Extending purgeCache to handle caching of the rendered snippet sub purgeCache { my $self = shift; my $self->session->cache; - $cache->delete("view__".$self->getId); - $cache->delete("view_1_".$self->getId); + eval { + $cache->delete("view__".$self->getId); + $cache->delete("view_1_".$self->getId); + }; $self->SUPER::purgeCache(); } @@ -292,7 +294,7 @@ sub view { } WebGUI::Macro::process($session,\$output); unless ($noCache) { - $session->cache->set("view_".$calledAsWebMethod."_".$self->getId, $output, $self->get("cacheTimeout")); + eval{$session->cache->set("view_".$calledAsWebMethod."_".$self->getId, $output, $self->get("cacheTimeout"))}; } return $output; } diff --git a/lib/WebGUI/Asset/Wobject/Article.pm b/lib/WebGUI/Asset/Wobject/Article.pm index f0d5774b7..cc02a5558 100644 --- a/lib/WebGUI/Asset/Wobject/Article.pm +++ b/lib/WebGUI/Asset/Wobject/Article.pm @@ -318,7 +318,7 @@ See WebGUI::Asset::purgeCache() for details. sub purgeCache { my $self = shift; - $self->session->cache->delete("view_".$self->getId); + eval{$self->session->cache->delete("view_".$self->getId)}; $self->SUPER::purgeCache; } @@ -350,7 +350,7 @@ sub view { my $cache = $self->session->cache; if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10 && !$self->session->form->process("overrideTemplateId") && !$self->session->form->process($self->paginateVar) && !$self->session->form->process("makePrintable")) { - my $out = $cache->get("view_".$self->getId); + my $out = eval{$cache->get("view_".$self->getId)}; return $out if $out; } my %var; @@ -414,7 +414,7 @@ sub view { my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate}); if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10 && !$self->session->form->process("overrideTemplateId") && !$self->session->form->process($self->paginateVar) && !$self->session->form->process("makePrintable")) { - $cache->set("view_".$self->getId, $out, $self->get("cacheTimeout")); + eval{$cache->set("view_".$self->getId, $out, $self->get("cacheTimeout"))}; } return $out; } diff --git a/lib/WebGUI/Asset/Wobject/Collaboration.pm b/lib/WebGUI/Asset/Wobject/Collaboration.pm index 0cf10f27d..867b58478 100644 --- a/lib/WebGUI/Asset/Wobject/Collaboration.pm +++ b/lib/WebGUI/Asset/Wobject/Collaboration.pm @@ -1404,8 +1404,10 @@ Extend the base method to delete view and visitor caches. sub purgeCache { my $self = shift; my $cache = $self->session->cache; - $cache->delete("view_".$self->getId); - $cache->delete($self->_visitorCacheKey); + eval { + $cache->delete("view_".$self->getId); + $cache->delete($self->_visitorCacheKey); + }; $self->next::method; } @@ -1551,7 +1553,7 @@ sub view { my $self = shift; my $cache = $self->session->cache; if ($self->_visitorCacheOk) { - my $out = $cache->get($self->_visitorCacheKey); + my $out = eval{$cache->get($self->_visitorCacheKey)}; $self->session->errorHandler->debug("HIT") if $out; return $out if $out; } @@ -1562,7 +1564,7 @@ sub view { $self->prepareView unless ($self->{_viewTemplate}); my $out = $self->processTemplate($self->getViewTemplateVars,undef,$self->{_viewTemplate}); if ($self->_visitorCacheOk) { - $cache->set($self->_visitorCacheKey, $out, $self->get("visitorCacheTimeout")); + eval{$cache->set($self->_visitorCacheKey, $out, $self->get("visitorCacheTimeout"))}; } return $out; } diff --git a/lib/WebGUI/Asset/Wobject/Folder.pm b/lib/WebGUI/Asset/Wobject/Folder.pm index 567f301c1..d7d8b1018 100644 --- a/lib/WebGUI/Asset/Wobject/Folder.pm +++ b/lib/WebGUI/Asset/Wobject/Folder.pm @@ -207,7 +207,7 @@ See WebGUI::Asset::purgeCache() for details. sub purgeCache { my $self = shift; - $self->session->cache->delete("view_".$self->getId); + eval{$self->session->cache->delete("view_".$self->getId)}; $self->SUPER::purgeCache; } @@ -226,7 +226,7 @@ sub view { # Use cached version for visitors my $cache = $self->session->cache; if ($self->session->user->isVisitor) { - my $out = $cache->get("view_".$self->getId); + my $out = eval{$cache->get("view_".$self->getId)}; return $out if $out; } @@ -291,7 +291,7 @@ sub view { # Update the cache if ($self->session->user->isVisitor) { - $cache->set("view_".$self->getId, $out, $self->get("visitorCacheTimeout")); + eval{$cache->set("view_".$self->getId, $out, $self->get("visitorCacheTimeout"))}; } return $out; diff --git a/lib/WebGUI/Asset/Wobject/HttpProxy.pm b/lib/WebGUI/Asset/Wobject/HttpProxy.pm index b0b271c32..a05e9806a 100644 --- a/lib/WebGUI/Asset/Wobject/HttpProxy.pm +++ b/lib/WebGUI/Asset/Wobject/HttpProxy.pm @@ -277,8 +277,10 @@ See WebGUI::Asset::purgeCache() for details. sub purgeCache { my $self = shift; my $cache = $self->session->cache; - $cache->delete([$self->get("proxiedUrl"),"URL"]); - $cache->delete([$self->get("proxiedUrl"),"HEADER"]); + eval { + $cache->delete([$self->get("proxiedUrl"),"URL"]); + $cache->delete([$self->get("proxiedUrl"),"HEADER"]); + }; $self->SUPER::purgeCache; } @@ -321,10 +323,11 @@ sub view { ### Do we have cached content to get? my $cache = $self->session->cache; - if ($requestMethod =~ /^GET$/i) - { - $var{header} = $cache->get([$proxiedUrl,'HEADER']); - $var{content} = $cache->get([$proxiedUrl,"URL"]); + if ($requestMethod =~ /^GET$/i) { + eval { + $var{header} = $cache->get([$proxiedUrl,'HEADER']); + $var{content} = $cache->get([$proxiedUrl,"URL"]); + }; } # Unless we have cached content @@ -464,8 +467,10 @@ sub view { $var{content} = sprintf $i18n->get('fetch page error'), $proxiedUrl, $proxiedUrl, $response->status_line; } unless ($self->get("cacheTimeout") <= 10) { - $cache->set([$proxiedUrl,'URL'], $var{content}, $self->get("cacheTimeout")); - $cache->set([$proxiedUrl,'HEADER'], $var{header}, $self->get("cacheTimeout")); + eval{ + $cache->set([$proxiedUrl,'URL'], $var{content}, $self->get("cacheTimeout")); + $cache->set([$proxiedUrl,'HEADER'], $var{header}, $self->get("cacheTimeout")); + }; } } diff --git a/lib/WebGUI/Asset/Wobject/Layout.pm b/lib/WebGUI/Asset/Wobject/Layout.pm index 9efedb3e9..5ac97afdf 100644 --- a/lib/WebGUI/Asset/Wobject/Layout.pm +++ b/lib/WebGUI/Asset/Wobject/Layout.pm @@ -413,12 +413,12 @@ sub www_view { $cacheKey .= '_ssl'; } my $cache = $session->cache; - my $out = $cache->get($cacheKey); + my $out = eval{$cache->get($cacheKey)}; unless ($out) { $self->prepareView; $session->stow->set("cacheFixOverride", 1); $out = $self->processStyle($self->view, { noHeadTags => 1 }); - $cache->set($cacheKey, $out, 60); + eval{$cache->set($cacheKey, $out, 60)}; $session->stow->delete("cacheFixOverride"); } # keep those ads rotating even though the output is cached diff --git a/lib/WebGUI/Asset/Wobject/Matrix.pm b/lib/WebGUI/Asset/Wobject/Matrix.pm index 147f038ee..cc9f3b83d 100644 --- a/lib/WebGUI/Asset/Wobject/Matrix.pm +++ b/lib/WebGUI/Asset/Wobject/Matrix.pm @@ -507,7 +507,7 @@ sub getListings { || ($versionTag && $versionTag->getId eq $self->get("tagId")); my $cache = $session->cache; unless ($noCache) { - $listingsEncoded = $cache->get("matrixListings_".$self->getId); + $listingsEncoded = eval{$cache->get("matrixListings_".$self->getId)}; } if ($listingsEncoded){ @@ -547,7 +547,7 @@ assetData.revisionDate } $listingsEncoded = JSON->new->encode($listings); - $cache->set("matrixListings_".$self->getId, $listingsEncoded, $self->get("listingsCacheTimeout")); + eval{$cache->set("matrixListings_".$self->getId, $listingsEncoded, $self->get("listingsCacheTimeout"))}; } return $listings; } @@ -688,7 +688,7 @@ sub view { || ($versionTag && $versionTag->getId eq $self->get("tagId")); my $cache = $session->cache; unless ($noCache) { - $varStatisticsEncoded = $cache->get("matrixStatistics_".$self->getId); + $varStatisticsEncoded = eval{$cache->get("matrixStatistics_".$self->getId)}; } if ($varStatisticsEncoded){ @@ -837,7 +837,7 @@ sub view { [$self->getId]); $varStatisticsEncoded = JSON->new->encode($varStatistics); - $cache->set("matrixStatistics_".$self->getId, $varStatisticsEncoded, $self->get("statisticsCacheTimeout")); + eval{$cache->set("matrixStatistics_".$self->getId, $varStatisticsEncoded, $self->get("statisticsCacheTimeout"))}; } foreach my $statistic (keys %{$varStatistics}) { diff --git a/lib/WebGUI/Asset/Wobject/MessageBoard.pm b/lib/WebGUI/Asset/Wobject/MessageBoard.pm index a640113d4..f48bbce0f 100644 --- a/lib/WebGUI/Asset/Wobject/MessageBoard.pm +++ b/lib/WebGUI/Asset/Wobject/MessageBoard.pm @@ -90,7 +90,7 @@ See WebGUI::Asset::purgeCache() for details. sub purgeCache { my $self = shift; - $self->session->cache->delete("view_".$self->getId); + eval{$self->session->cache->delete("view_".$self->getId)}; $self->SUPER::purgeCache; } @@ -106,7 +106,7 @@ sub view { my $self = shift; my $cache = $self->session->cache; if ($self->session->user->isVisitor) { - my $out = $cache->get("view_".$self->getId); + my $out = eval{$cache->get("view_".$self->getId)}; return $out if $out; } my %var; @@ -171,7 +171,7 @@ sub view { my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate}); if ($self->session->user->isVisitor) { - $cache->set("view_".$self->getId, $out, $self->get("visitorCacheTimeout")); + eval{$cache->set("view_".$self->getId, $out, $self->get("visitorCacheTimeout"))}; } return $out; } diff --git a/lib/WebGUI/Asset/Wobject/MultiSearch.pm b/lib/WebGUI/Asset/Wobject/MultiSearch.pm index 046f07b40..345d35aee 100644 --- a/lib/WebGUI/Asset/Wobject/MultiSearch.pm +++ b/lib/WebGUI/Asset/Wobject/MultiSearch.pm @@ -113,7 +113,7 @@ See WebGUI::Asset::purgeCache() for details. sub purgeCache { my $self = shift; - $self->session->cache->delete("view_".$self->getId); + eval{$self->session->cache->delete("view_".$self->getId)}; $self->SUPER::purgeCache; } @@ -130,7 +130,7 @@ sub view { my $self = shift; my $cache = $self->session->cache; if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) { - my $out = $cache->get("view_".$self->getId); + my $out = eval{$cache->get("view_".$self->getId)}; return $out if $out; } my $i18n = WebGUI::International->new($self->session, 'Asset_MultiSearch'); @@ -143,7 +143,7 @@ sub view { my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate}); if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) { - $cache->set("view_".$self->getId, $out, $self->get("cacheTimeout")); + eval{$cache->set("view_".$self->getId, $out, $self->get("cacheTimeout"))}; } return $out; } diff --git a/lib/WebGUI/Asset/Wobject/SQLReport.pm b/lib/WebGUI/Asset/Wobject/SQLReport.pm index 1e65e7c8f..89b7a01de 100644 --- a/lib/WebGUI/Asset/Wobject/SQLReport.pm +++ b/lib/WebGUI/Asset/Wobject/SQLReport.pm @@ -517,7 +517,7 @@ See WebGUI::Asset::purgeCache() for details. sub purgeCache { my $self = shift; - $self->session->cache->delete("view_".$self->getId); + eval{$self->session->cache->delete("view_".$self->getId)}; $self->SUPER::purgeCache; } @@ -534,7 +534,7 @@ sub view { my $self = shift; my $cache = $self->session->cache; if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) { - my $out = $cache->get("view_".$self->getId); + my $out = eval{$cache->get("view_".$self->getId)}; return $out if $out; } # Initiate an empty debug loop @@ -560,7 +560,7 @@ sub view { my $out = $self->processTemplate($var,undef,$self->{_viewTemplate}); if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) { - $cache->set("view_".$self->getId, $out, $self->get("cacheTimeout")); + eval{$cache->set("view_".$self->getId, $out, $self->get("cacheTimeout"))}; } return $out; } diff --git a/lib/WebGUI/Asset/Wobject/SyndicatedContent.pm b/lib/WebGUI/Asset/Wobject/SyndicatedContent.pm index a1722c820..a0c73ba9a 100644 --- a/lib/WebGUI/Asset/Wobject/SyndicatedContent.pm +++ b/lib/WebGUI/Asset/Wobject/SyndicatedContent.pm @@ -142,9 +142,9 @@ sub generateFeed { if ($self->get('processMacroInRssUrl')) { WebGUI::Macro::process($self->session, \$url); } - my $value = $cache->get($url); + my $value = eval{$cache->get($url)}; unless ($value) { - $value = $cache->setByHttp($url, $url, $self->get("cacheTimeout")); + $value = eval{$cache->setByHttp($url, $url, $self->get("cacheTimeout"))}; $newlyCached = 1; } # if the content can be downgraded, it is either valid latin1 or didn't have @@ -327,7 +327,7 @@ See WebGUI::Asset::purgeCache() for details. sub purgeCache { my $self = shift; - $self->session->cache->delete("view_".$self->getId); + eval{$self->session->cache->delete("view_".$self->getId)}; $self->next::method; } @@ -345,7 +345,7 @@ sub view { # try the cached version my $cache = $session->cache; - my $out = $cache->get("view_".$self->getId); + my $out = eval{$cache->get("view_".$self->getId)}; return $out if ($out ne "" && !$session->var->isAdminOn); #return $out if $out; @@ -353,7 +353,7 @@ sub view { my $feed = $self->generateFeed; $out = $self->processTemplate($self->getTemplateVariables($feed),undef,$self->{_viewTemplate}); if (!$session->var->isAdminOn && $self->get("cacheTimeout") > 10) { - $cache->set("view_".$self->getId, $out, $self->get("cacheTimeout")); + eval{$cache->set("view_".$self->getId, $out, $self->get("cacheTimeout"))}; } return $out; } diff --git a/lib/WebGUI/Asset/Wobject/Thingy.pm b/lib/WebGUI/Asset/Wobject/Thingy.pm index 4ccff1dca..8cfd2cdf6 100644 --- a/lib/WebGUI/Asset/Wobject/Thingy.pm +++ b/lib/WebGUI/Asset/Wobject/Thingy.pm @@ -2662,7 +2662,7 @@ sub www_export { push(@fieldLabels,@metaDataFields) } - $query = $session->cache->get("query_".$thingId); + $query = eval{$session->cache->get("query_".$thingId)}; $sth = $session->db->read($query); ### Loop through the returned structure and put it through Text::CSV @@ -3307,7 +3307,7 @@ sequenceNumber'); } # store query in cache for thirty minutes - $self->session->cache->set("query_".$thingId, $query, 30*60); + eval{$self->session->cache->set("query_".$thingId, $query, 30*60)}; $paginatePage = $self->session->form->param('pn') || 1; $currentUrl = $self->session->url->append($currentUrl, "orderBy=".$orderBy) if $orderBy; diff --git a/lib/WebGUI/AssetLineage.pm b/lib/WebGUI/AssetLineage.pm index 98aedb717..cc9a1c444 100644 --- a/lib/WebGUI/AssetLineage.pm +++ b/lib/WebGUI/AssetLineage.pm @@ -148,12 +148,15 @@ sub cascadeLineage { [$newLineage, length($oldLineage) + 1, $oldLineage . '%'] ); if ($records > 20) { - $self->session->cache->flush; + eval{$self->session->cache->flush}; } else { my $descendants = $self->session->db->read("SELECT assetId FROM asset WHERE lineage LIKE ?", [$newLineage . '%']); while (my ($assetId, $lineage) = $descendants->array) { - $cache->deleteChunk(["asset",$assetId]); + my $asset = WebGUI::Asset->newByDynamicClass($self->session, $assetId); + if (defined $asset) { + $asset->purgeCache; + } } $descendants->finish; } diff --git a/lib/WebGUI/Group.pm b/lib/WebGUI/Group.pm index 1024b87b0..8e1542be8 100644 --- a/lib/WebGUI/Group.pm +++ b/lib/WebGUI/Group.pm @@ -127,7 +127,7 @@ not be added to any group. Groups may not be added to themselves. sub addGroups { my $self = shift; my $groups = shift; - $self->session->cache->delete($self->getId); + eval{$self->session->cache->delete($self->getId)}; GROUP: foreach my $gid (@{$groups}) { next if ($gid eq '1'); next if ($gid eq $self->getId); @@ -234,7 +234,7 @@ sub clearCaches { my $groups = $self->getAllGroupsFor(); my $cache = $self->session->cache; foreach my $group ( $self->getId, @{ $groups } ) { - $cache->delete($group); + eval{$cache->delete($group)}; } my $stow = $self->session->stow; $stow->delete("groupObj"); @@ -563,7 +563,7 @@ sub getAllUsers { my $loopCount = shift; my $expireTime = 0; my $cache = $self->session->cache; - my $value = $cache->get($self->getId); + my $value = eval{$cache->get($self->getId)}; return $value if defined $value; my @users = (); push @users, @@ -588,7 +588,7 @@ sub getAllUsers { } my %users = map { $_ => 1 } @users; @users = keys %users; - $cache->set($self->getId, \@users, $self->groupCacheTimeout); + eval{$cache->set($self->getId, \@users, $self->groupCacheTimeout)}; return \@users; } diff --git a/lib/WebGUI/Operation/Cache.pm b/lib/WebGUI/Operation/Cache.pm index d41952a83..727a36143 100644 --- a/lib/WebGUI/Operation/Cache.pm +++ b/lib/WebGUI/Operation/Cache.pm @@ -92,7 +92,7 @@ sub www_flushCache { return $session->privilege->adminOnly unless canView($session); # Flush the cache - $session->cache->flush; + eval{$session->cache->flush}; return www_manageCache($session); } diff --git a/lib/WebGUI/Operation/Settings.pm b/lib/WebGUI/Operation/Settings.pm index d2a4be3b5..33293730e 100644 --- a/lib/WebGUI/Operation/Settings.pm +++ b/lib/WebGUI/Operation/Settings.pm @@ -726,7 +726,7 @@ sub www_saveSettings { $session->db->write( "UPDATE userProfileData SET showMessageOnLoginSeen=0" ); - $session->cache->flush; + eval{$session->cache->flush}; } return www_editSettings($session, { errors => \@errors, message => $i18n->get("editSettings done") }); diff --git a/lib/WebGUI/Operation/Statistics.pm b/lib/WebGUI/Operation/Statistics.pm index 94e3ca320..320b7924c 100644 --- a/lib/WebGUI/Operation/Statistics.pm +++ b/lib/WebGUI/Operation/Statistics.pm @@ -180,9 +180,9 @@ sub www_viewStatistics { my $i18n = WebGUI::International->new($session); my $url = "http://update.webgui.org/latest-version.txt"; my $cache = $session->cache; - my $version = $cache->get($url); + my $version = eval{$cache->get($url)}; if (not defined $version) { - $version = $cache->setByHttp($url, $url, 43200); + $version = eval{$cache->setByHttp($url, $url, 43200)}; } chomp $version; $output .= ''; diff --git a/lib/WebGUI/User.pm b/lib/WebGUI/User.pm index 597fecc42..a849befa8 100644 --- a/lib/WebGUI/User.pm +++ b/lib/WebGUI/User.pm @@ -286,7 +286,7 @@ sub cache { for my $k (qw(_userId _user _profile)) { $userData{$k} = $self->{$k}; } - $self->session->cache->set(["user",$self->userId], \%userData, 60*60*24); + eval{$self->session->cache->set(["user",$self->userId], \%userData, 60*60*24)}; } #------------------------------------------------------------------- @@ -1060,7 +1060,7 @@ sub new { my $userId = shift || 1; my $overrideId = shift; $userId = _create($session, $overrideId) if ($userId eq "new"); - my $self = $session->cache->get(["user",$userId]) || {}; + my $self = eval{$session->cache->get(["user",$userId])} || {}; bless $self, $class; $self->{_session} = $session; unless ($self->{_userId} && $self->{_user}{username}) { @@ -1334,7 +1334,7 @@ Deletes this user object out of the cache. sub uncache { my $self = shift; - $self->session->cache->delete(["user",$self->userId]); + eval{$self->session->cache->delete(["user",$self->userId])}; } #---------------------------------------------------------------------------- diff --git a/sbin/preload.exclude.example b/sbin/preload.exclude.example index 9b2667aeb..c7fa1cc35 100644 --- a/sbin/preload.exclude.example +++ b/sbin/preload.exclude.example @@ -2,7 +2,6 @@ # that you don't want to be loaded by modperl. This will decrease the overall # size of your modperl instances, which will increase performance, and reduce # memory use. -WebGUI::Cache::Database WebGUI::Auth::LDAP WebGUI::Asset::Wobject::WSClient WebGUI::Asset::File::ZipArchive diff --git a/sbin/testmc.pl b/sbin/testmc.pl deleted file mode 100644 index 0d847e4a7..000000000 --- a/sbin/testmc.pl +++ /dev/null @@ -1,141 +0,0 @@ -#!/usr/bin/env perl - -#------------------------------------------------------------------- -# WebGUI is Copyright 2001-2009 Plain Black Corporation. -#------------------------------------------------------------------- -# Please read the legal notices (docs/legal.txt) and the license -# (docs/license.txt) that came with this distribution before using -# this software. -#------------------------------------------------------------------- -# http://www.plainblack.com info@plainblack.com -#------------------------------------------------------------------- - -$|++; # disable output buffering -our ($webguiRoot, $configFile, $help, $man); - -BEGIN { - $webguiRoot = ".."; - unshift (@INC, $webguiRoot."/lib"); -} - -use strict; -use Pod::Usage; -use Getopt::Long; -use WebGUI::Session; -use Config::JSON; -use WebGUI::Cache; -use Time::HiRes; - -# Get parameters here, including $help -GetOptions( - 'configFile=s' => \$configFile, - 'help' => \$help, - 'man' => \$man, -); - -pod2usage( verbose => 1 ) if $help; -pod2usage( verbose => 2 ) if $man; -pod2usage( msg => "Must specify a config file!" ) unless $configFile; -my $session = start( $webguiRoot, $configFile ); -print "creating cache object\n"; -my $cache = WebGUI::Cache->new($session); -print "setting cache\n"; -my $t = [Time::HiRes::gettimeofday]; -my @keys; -my $sth = $session->db->read("select assetId, revisionDate, title from assetData"); -while (my ($id, $rev, $title) = $sth->array) { - push @keys, [$id, $rev]; - $cache->set([$id,$rev],$title); -} -print "Took ".Time::HiRes::tv_interval($t)." seconds to set ".scalar(@keys)." cache objects.\n"; -print "fetching cache\n"; -my $t = [Time::HiRes::gettimeofday]; -foreach my $key (@keys) { - my $value = $cache->get($key); -} -print "Took ".Time::HiRes::tv_interval($t)." seconds to get ".scalar(@keys)." cache objects.\n"; -print "done\n"; - - -finish($session); - -#---------------------------------------------------------------------------- -# Your sub here - -#---------------------------------------------------------------------------- -sub start { - my $webguiRoot = shift; - my $configFile = shift; - my $session = WebGUI::Session->open($webguiRoot,$configFile); - $session->user({userId=>3}); - - ## If your script is adding or changing content you need these lines, otherwise leave them commented - # - # my $versionTag = WebGUI::VersionTag->getWorking($session); - # $versionTag->set({name => 'Name Your Tag'}); - # - ## - - return $session; -} - -#---------------------------------------------------------------------------- -sub finish { - my $session = shift; - - ## If your script is adding or changing content you need these lines, otherwise leave them commented - # - # my $versionTag = WebGUI::VersionTag->getWorking($session); - # $versionTag->commit; - ## - - $session->var->end; - $session->close; -} - -__END__ - - -=head1 NAME - -utility - A template for WebGUI utility scripts - -=head1 SYNOPSIS - - utility --configFile config.conf ... - - utility --help - -=head1 DESCRIPTION - -This WebGUI utility script helps you... - -=head1 ARGUMENTS - -=head1 OPTIONS - -=over - -=item B<--configFile config.conf> - -The WebGUI config file to use. Only the file name needs to be specified, -since it will be looked up inside WebGUI's configuration directory. -This parameter is required. - -=item B<--help> - -Shows a short summary and usage - -=item B<--man> - -Shows this document - -=back - -=head1 AUTHOR - -Copyright 2001-2009 Plain Black Corporation. - -=cut - -#vim:ft=perl