backport NoSignalHandlers patch to 1.9... should fix up RT initialization in freeside...
authorivan <ivan>
Tue, 22 Jun 2010 04:11:04 +0000 (04:11 +0000)
committerivan <ivan>
Tue, 22 Jun 2010 04:11:04 +0000 (04:11 +0000)
rt/lib/RT.pm
rt/lib/RT.pm.in

index 033e5e6..df9bc83 100644 (file)
@@ -24,7 +24,7 @@
 # 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.
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 # 
 # 
 # CONTRIBUTION SUBMISSION POLICY:
@@ -186,6 +186,8 @@ Conenct to the database, set up logging.
 
 sub Init {
 
+    my @arg = @_;
+
     CheckPerlRequirements();
 
     #Get a database connection
@@ -202,7 +204,7 @@ sub Init {
     $System = RT::System->new();
 
     InitClasses();
-    InitLogging(); 
+    InitLogging(@arg); 
 }
 
 
@@ -228,6 +230,8 @@ Create the RT::Logger object.
 
 sub InitLogging {
 
+    my %arg = @_;
+
     # We have to set the record separator ($, man perlvar)
     # or Log::Dispatch starts getting
     # really pissy, as some other module we use unsets it.
@@ -342,6 +346,8 @@ sub InitLogging {
 ## Mason).  It will log all problems through the standard logging
 ## mechanism (see above).
 
+    unless ( $arg{'NoSignalHandlers'} ) {
+
     $SIG{__WARN__} = sub {
         # The 'wide character' warnings has to be silenced for now, at least
         # until HTML::Mason offers a sane way to process both raw output and
@@ -363,6 +369,8 @@ $SIG{__DIE__}  = sub {
     die $_[0];
 };
 
+    }
+
 # }}}
 
 }
index 1a9bf08..e668e6f 100644 (file)
@@ -2,7 +2,7 @@
 # 
 # COPYRIGHT:
 #  
-# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC 
 #                                          <jesse@bestpractical.com>
 # 
 # (Except where explicitly superseded by other copyright notices)
@@ -24,7 +24,7 @@
 # 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/copyleft/gpl.html.
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
 # 
 # 
 # CONTRIBUTION SUBMISSION POLICY:
@@ -186,6 +186,8 @@ Conenct to the database, set up logging.
 
 sub Init {
 
+    my @arg = @_;
+
     CheckPerlRequirements();
 
     #Get a database connection
@@ -202,7 +204,7 @@ sub Init {
     $System = RT::System->new();
 
     InitClasses();
-    InitLogging(); 
+    InitLogging(@arg); 
 }
 
 
@@ -228,6 +230,8 @@ Create the RT::Logger object.
 
 sub InitLogging {
 
+    my %arg = @_;
+
     # We have to set the record separator ($, man perlvar)
     # or Log::Dispatch starts getting
     # really pissy, as some other module we use unsets it.
@@ -342,6 +346,8 @@ sub InitLogging {
 ## Mason).  It will log all problems through the standard logging
 ## mechanism (see above).
 
+    unless ( $arg{'NoSignalHandlers'} ) {
+
     $SIG{__WARN__} = sub {
         # The 'wide character' warnings has to be silenced for now, at least
         # until HTML::Mason offers a sane way to process both raw output and
@@ -363,6 +369,8 @@ $SIG{__DIE__}  = sub {
     die $_[0];
 };
 
+    }
+
 # }}}
 
 }
@@ -410,7 +418,9 @@ Load all modules that define base classes
 sub InitClasses {
     require RT::Tickets;
     require RT::Transactions;
+    require RT::Attachments;
     require RT::Users;
+    require RT::Principals;
     require RT::CurrentUser;
     require RT::Templates;
     require RT::Queues;
@@ -423,6 +433,31 @@ sub InitClasses {
     require RT::CustomFieldValues;
     require RT::ObjectCustomFields;
     require RT::ObjectCustomFieldValues;
+    require RT::Attributes;
+
+    # on a cold server (just after restart) people could have an object
+    # in the session, as we deserialize it so we never call constructor
+    # of the class, so the list of accessible fields is empty and we die
+    # with "Method xxx is not implemented in RT::SomeClass"
+    $_->_BuildTableAttributes foreach qw(
+        RT::Ticket
+        RT::Transaction
+        RT::Attachment
+        RT::User
+        RT::Principal
+        RT::Template
+        RT::Queue
+        RT::ScripAction
+        RT::ScripCondition
+        RT::Scrip
+        RT::Group
+        RT::GroupMember
+        RT::CustomField
+        RT::CustomFieldValue
+        RT::ObjectCustomField
+        RT::ObjectCustomFieldValue
+        RT::Attribute
+    );
 }
 
 # }}}