[Bps-public-commit] rt-extension-rest2 branch set-current-interface created. 1.14-7-g4e6e6c2

BPS Git Server git at git.bestpractical.com
Mon Apr 4 18:30:21 UTC 2022


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "rt-extension-rest2".

The branch, set-current-interface has been created
        at  4e6e6c277ffa28c92f7517e090948d84ff65ab39 (commit)

- Log -----------------------------------------------------------------
commit 4e6e6c277ffa28c92f7517e090948d84ff65ab39
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Mon Nov 22 22:43:12 2021 +0800

    Set current interface if appliable

diff --git a/lib/RT/Extension/REST2/Dispatcher.pm b/lib/RT/Extension/REST2/Dispatcher.pm
index 166492e..b980a99 100644
--- a/lib/RT/Extension/REST2/Dispatcher.pm
+++ b/lib/RT/Extension/REST2/Dispatcher.pm
@@ -44,6 +44,7 @@ sub to_psgi_app {
     return sub {
         my $env = shift;
 
+        RT->SetCurrentInterface('REST2') if RT->can('SetCurrentInterface');
         RT::ConnectToDatabase();
         my $dispatch = $self->_dispatcher->dispatch($env->{PATH_INFO});
 

commit f67f59f532a87c22e124e8aed51c5a14e63e9d32
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Mon Nov 22 22:41:13 2021 +0800

    Create CleanupRequest middleware to really cleanup requests for REST2
    
    Previously we added the cleanup functionality to to_psgi_app(initially
    created as an alias of "to_app") in 059ab1c61b, which never got called,
    as the running order is like:
    
        RT::Interface::Web::Handler->PSGIWrap
        RT::Extension::REST2->PSGIWrap
        RT::Extension::REST2->to_app
        RT::Extension::REST2::Dispatcher->to_psgi_app
    
    The call of response_cb was not quite right either as it doesn't expect
    a Plack app as the first argument. The postgres issue 059ab1c61b tried
    to fix was actually fixed in c3610c1a6a.
    
    This commit wraps the functionality into a middleware and calls the more
    complete version(RT::Interface::Web::Handler::CleanupRequest).

diff --git a/lib/RT/Extension/REST2.pm b/lib/RT/Extension/REST2.pm
index 5e0c8fc..6bfba12 100644
--- a/lib/RT/Extension/REST2.pm
+++ b/lib/RT/Extension/REST2.pm
@@ -1291,17 +1291,13 @@ handle them appropriately.
 sub to_psgi_app {
     my $self = shift;
     my $res = $self->to_app(@_);
-
-    return Plack::Util::response_cb($res, sub {
-        my $res = shift;
-        $self->CleanupRequest;
-    });
 }
 
 sub to_app {
     my $class = shift;
 
     return builder {
+        enable '+RT::Extension::REST2::Middleware::CleanupRequest';
         enable '+RT::Extension::REST2::Middleware::ErrorAsJSON';
         enable '+RT::Extension::REST2::Middleware::Log';
         enable '+RT::Extension::REST2::Middleware::Auth';
@@ -1326,24 +1322,6 @@ sub PSGIWrap {
     };
 }
 
-sub CleanupRequest {
-
-    if ( $RT::Handle && $RT::Handle->TransactionDepth ) {
-        $RT::Handle->ForceRollback;
-        $RT::Logger->crit(
-            "Transaction not committed. Usually indicates a software fault."
-            . "Data loss may have occurred" );
-    }
-
-    # Clean out the ACL cache. the performance impact should be marginal.
-    # Consistency is imprived, too.
-    RT::Principal->InvalidateACLCache();
-    DBIx::SearchBuilder::Record::Cachable->FlushCache
-      if ( RT->Config->Get('WebFlushDbCacheEveryRequest')
-        and UNIVERSAL::can(
-            'DBIx::SearchBuilder::Record::Cachable' => 'FlushCache' ) );
-}
-
 =head1 AUTHOR
 
 Best Practical Solutions, LLC <modules at bestpractical.com>
diff --git a/lib/RT/Extension/REST2/Middleware/CleanupRequest.pm b/lib/RT/Extension/REST2/Middleware/CleanupRequest.pm
new file mode 100644
index 0000000..bb3e529
--- /dev/null
+++ b/lib/RT/Extension/REST2/Middleware/CleanupRequest.pm
@@ -0,0 +1,64 @@
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2021 Best Practical Solutions, LLC
+#                                          <sales at bestpractical.com>
+#
+# (Except where explicitly superseded by other copyright notices)
+#
+#
+# LICENSE:
+#
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+#
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+#
+#
+# CONTRIBUTION SUBMISSION POLICY:
+#
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of
+# the GNU General Public License and is only of importance to you if
+# you choose to contribute your changes and enhancements to the
+# community by submitting them to Best Practical Solutions, LLC.)
+#
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with
+# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+# royalty-free, perpetual, license to use, copy, create derivative
+# works based on those contributions, and sublicense and distribute
+# those contributions and any derivatives thereof.
+#
+# END BPS TAGGED BLOCK }}}
+
+package RT::Extension::REST2::Middleware::CleanupRequest;
+
+use strict;
+use warnings;
+
+use base 'Plack::Middleware';
+
+sub call {
+    my ( $self, $env ) = @_;
+    my $res = $self->app->($env);
+    require RT::Interface::Web::Handler;
+    RT::Interface::Web::Handler->CleanupRequest;
+    return $res;
+}
+
+1;

-----------------------------------------------------------------------


hooks/post-receive
-- 
rt-extension-rest2


More information about the Bps-public-commit mailing list