Index: /trunk/Nebulous-Server/lib/Nebulous/Server.pm
===================================================================
--- /trunk/Nebulous-Server/lib/Nebulous/Server.pm	(revision 2902)
+++ /trunk/Nebulous-Server/lib/Nebulous/Server.pm	(revision 2903)
@@ -1,5 +1,5 @@
 # Copyright (c) 2004  Joshua Hoblitt
 #
-# $Id: Server.pm,v 1.5 2005-01-05 03:19:12 jhoblitt Exp $
+# $Id: Server.pm,v 1.6 2005-01-05 03:45:52 jhoblitt Exp $
 
 package PS::IPP::IData::Server;
@@ -113,5 +113,5 @@
         {
             # create storage_object
-            my $query = $db->prepare( $sql->new_object ); 
+            my $query = $db->prepare_cached( $sql->new_object ); 
             $query->execute( $key, $class, $comment );
         }
@@ -119,5 +119,5 @@
         {
             # create instance with no URI
-            my $query = $db->prepare( $sql->new_object_instance );
+            my $query = $db->prepare_cached( $sql->new_object_instance );
             $query->execute;
         }
@@ -125,5 +125,5 @@
         {
             # get instance ID
-            my $query = $db->prepare( $sql->last_insert_id );
+            my $query = $db->prepare_cached( $sql->last_insert_id );
             $query->execute;
             ( $ins_id ) = $query->fetchrow_array;
@@ -152,5 +152,5 @@
     eval {
         {
-            my $query = $db->prepare( $sql->update_instance_uri );
+            my $query = $db->prepare_cached( $sql->update_instance_uri );
             $query->execute( $uri, $ins_id );
         }
@@ -190,5 +190,5 @@
     eval {
         {
-            my $query = $db->prepare( $sql->get_object_instances );
+            my $query = $db->prepare_cached( $sql->get_object_instances );
             my $rows = $query->execute( $key );
 
@@ -202,10 +202,10 @@
 
         {
-            my $query = $db->prepare( $sql->new_instance );
+            my $query = $db->prepare_cached( $sql->new_instance );
             $query->execute( $so_id );
         }
 
         {
-            my $query = $db->prepare( $sql->last_insert_id );
+            my $query = $db->prepare_cached( $sql->last_insert_id );
             $query->execute();
 
@@ -217,5 +217,5 @@
             $log->debug( "generated uri $uri");
 
-            my $query = $db->prepare( $sql->update_instance_uri );
+            my $query = $db->prepare_cached( $sql->update_instance_uri );
             $query->execute( $uri, $ins_id );
         }
@@ -266,5 +266,5 @@
     eval {
         # this will set update locks
-        my $query = $db->prepare( $sql->get_object_locks );
+        my $query = $db->prepare_cached( $sql->get_object_locks );
         my $rows = $query->execute( $key );
         unless ( $rows == 1 ) {
@@ -301,5 +301,5 @@
 
         eval {
-            my $query = $db->prepare( $sql->set_write_lock );
+            my $query = $db->prepare_cached( $sql->set_write_lock );
             my $rows = $query->execute( $key );
         
@@ -331,5 +331,5 @@
 
         eval {
-            my $query = $db->prepare( $sql->increment_read_lock );
+            my $query = $db->prepare_cached( $sql->increment_read_lock );
             my $rows = $query->execute( $key );
         
@@ -378,5 +378,5 @@
     eval {
         # this will set update locks
-        my $query = $db->prepare( $sql->get_object_locks );
+        my $query = $db->prepare_cached( $sql->get_object_locks );
         my $rows = $query->execute( $key );
         unless ( $rows == 1 ) {
@@ -411,5 +411,5 @@
 
         eval {
-            my $query = $db->prepare( $sql->delete_write_lock );
+            my $query = $db->prepare_cached( $sql->delete_write_lock );
             my $rows = $query->execute( $key );
         
@@ -449,5 +449,5 @@
 
         eval {
-            my $query = $db->prepare( $sql->decrement_read_lock );
+            my $query = $db->prepare_cached( $sql->decrement_read_lock );
             my $rows = $query->execute( $key );
         
@@ -495,5 +495,5 @@
 
     eval {
-        $query = $db->prepare( $sql->get_object_instances );
+        $query = $db->prepare_cached( $sql->get_object_instances );
         $query->execute( $key );
     };
@@ -530,5 +530,5 @@
         # get so_id
         {
-            my $query = $db->prepare( $sql->get_object_from_uri );
+            my $query = $db->prepare_cached( $sql->get_object_from_uri );
             my $rows = $query->execute( $uri );
 
@@ -541,5 +541,5 @@
 
         {
-            my $query = $db->prepare( $sql->get_instance_count );
+            my $query = $db->prepare_cached( $sql->get_instance_count );
             $query->execute( $so_id );
 
@@ -549,5 +549,5 @@
         # remove instance
         {
-            my $query = $db->prepare( $sql->delete_instance );
+            my $query = $db->prepare_cached( $sql->delete_instance );
             my $rows = $query->execute( $uri );
             
@@ -562,5 +562,5 @@
         if ( $instances == 1 ) {
             # we just removed the last instance
-            my $query = $db->prepare( $sql->delete_object );
+            my $query = $db->prepare_cached( $sql->delete_object );
             my $rows = $query->execute( $so_id );
 
@@ -596,5 +596,5 @@
     my $stat;
     eval {
-        my $query = $db->prepare( $sql->get_object );
+        my $query = $db->prepare_cached( $sql->get_object );
         my $rows = $query->execute( $key );
 
@@ -625,29 +625,30 @@
 
     my $volume;
-    {
+    eval {
+        # TODO cache this?
         my $query;
-        eval {
-            # TODO cache this?
-            my $rows;
-            if ( $name ) {
-                $query = $db->prepare( $sql->get_storage_volume_byname );
-                $rows = $query->execute( $name );
-            } else {
-                $query = $db->prepare( $sql->get_storage_volume );
-                $rows = $query->execute;
-            }
-
-            # there has to be atleast one storage volume
-            unless ( $rows > 0 ) {
-                $db->rollback;
-
-                $log->logdie( "affected row count is $rows instead of 1" );
-            } else {
-                $db->commit;
-            }
-        };
+        my $rows;
+        if ( $name ) {
+            $query = $db->prepare_cached( $sql->get_storage_volume_byname );
+            $rows = $query->execute( $name );
+        } else {
+            $query = $db->prepare_cached( $sql->get_storage_volume );
+            $rows = $query->execute;
+        }
+
+        # there has to be atleast one storage volume
+        unless ( $rows > 0 ) {
+            $log->logdie( "affected row count is $rows instead of 1" );
+        }
+
+        $volume = $query->fetchrow_hashref->{ 'uri' };
+
+        $query->finish;
+        $db->commit;
+    };
+    if ( $@ ) {
+        $query->finish;
+        $db->rollback;
         $log->logdie( "database error: $@" ) if $@;
-
-        $volume = $query->fetchrow_hashref->{ 'uri' };
     }
 
Index: /trunk/Nebulous/lib/Nebulous/Server.pm
===================================================================
--- /trunk/Nebulous/lib/Nebulous/Server.pm	(revision 2902)
+++ /trunk/Nebulous/lib/Nebulous/Server.pm	(revision 2903)
@@ -1,5 +1,5 @@
 # Copyright (c) 2004  Joshua Hoblitt
 #
-# $Id: Server.pm,v 1.5 2005-01-05 03:19:12 jhoblitt Exp $
+# $Id: Server.pm,v 1.6 2005-01-05 03:45:52 jhoblitt Exp $
 
 package PS::IPP::IData::Server;
@@ -113,5 +113,5 @@
         {
             # create storage_object
-            my $query = $db->prepare( $sql->new_object ); 
+            my $query = $db->prepare_cached( $sql->new_object ); 
             $query->execute( $key, $class, $comment );
         }
@@ -119,5 +119,5 @@
         {
             # create instance with no URI
-            my $query = $db->prepare( $sql->new_object_instance );
+            my $query = $db->prepare_cached( $sql->new_object_instance );
             $query->execute;
         }
@@ -125,5 +125,5 @@
         {
             # get instance ID
-            my $query = $db->prepare( $sql->last_insert_id );
+            my $query = $db->prepare_cached( $sql->last_insert_id );
             $query->execute;
             ( $ins_id ) = $query->fetchrow_array;
@@ -152,5 +152,5 @@
     eval {
         {
-            my $query = $db->prepare( $sql->update_instance_uri );
+            my $query = $db->prepare_cached( $sql->update_instance_uri );
             $query->execute( $uri, $ins_id );
         }
@@ -190,5 +190,5 @@
     eval {
         {
-            my $query = $db->prepare( $sql->get_object_instances );
+            my $query = $db->prepare_cached( $sql->get_object_instances );
             my $rows = $query->execute( $key );
 
@@ -202,10 +202,10 @@
 
         {
-            my $query = $db->prepare( $sql->new_instance );
+            my $query = $db->prepare_cached( $sql->new_instance );
             $query->execute( $so_id );
         }
 
         {
-            my $query = $db->prepare( $sql->last_insert_id );
+            my $query = $db->prepare_cached( $sql->last_insert_id );
             $query->execute();
 
@@ -217,5 +217,5 @@
             $log->debug( "generated uri $uri");
 
-            my $query = $db->prepare( $sql->update_instance_uri );
+            my $query = $db->prepare_cached( $sql->update_instance_uri );
             $query->execute( $uri, $ins_id );
         }
@@ -266,5 +266,5 @@
     eval {
         # this will set update locks
-        my $query = $db->prepare( $sql->get_object_locks );
+        my $query = $db->prepare_cached( $sql->get_object_locks );
         my $rows = $query->execute( $key );
         unless ( $rows == 1 ) {
@@ -301,5 +301,5 @@
 
         eval {
-            my $query = $db->prepare( $sql->set_write_lock );
+            my $query = $db->prepare_cached( $sql->set_write_lock );
             my $rows = $query->execute( $key );
         
@@ -331,5 +331,5 @@
 
         eval {
-            my $query = $db->prepare( $sql->increment_read_lock );
+            my $query = $db->prepare_cached( $sql->increment_read_lock );
             my $rows = $query->execute( $key );
         
@@ -378,5 +378,5 @@
     eval {
         # this will set update locks
-        my $query = $db->prepare( $sql->get_object_locks );
+        my $query = $db->prepare_cached( $sql->get_object_locks );
         my $rows = $query->execute( $key );
         unless ( $rows == 1 ) {
@@ -411,5 +411,5 @@
 
         eval {
-            my $query = $db->prepare( $sql->delete_write_lock );
+            my $query = $db->prepare_cached( $sql->delete_write_lock );
             my $rows = $query->execute( $key );
         
@@ -449,5 +449,5 @@
 
         eval {
-            my $query = $db->prepare( $sql->decrement_read_lock );
+            my $query = $db->prepare_cached( $sql->decrement_read_lock );
             my $rows = $query->execute( $key );
         
@@ -495,5 +495,5 @@
 
     eval {
-        $query = $db->prepare( $sql->get_object_instances );
+        $query = $db->prepare_cached( $sql->get_object_instances );
         $query->execute( $key );
     };
@@ -530,5 +530,5 @@
         # get so_id
         {
-            my $query = $db->prepare( $sql->get_object_from_uri );
+            my $query = $db->prepare_cached( $sql->get_object_from_uri );
             my $rows = $query->execute( $uri );
 
@@ -541,5 +541,5 @@
 
         {
-            my $query = $db->prepare( $sql->get_instance_count );
+            my $query = $db->prepare_cached( $sql->get_instance_count );
             $query->execute( $so_id );
 
@@ -549,5 +549,5 @@
         # remove instance
         {
-            my $query = $db->prepare( $sql->delete_instance );
+            my $query = $db->prepare_cached( $sql->delete_instance );
             my $rows = $query->execute( $uri );
             
@@ -562,5 +562,5 @@
         if ( $instances == 1 ) {
             # we just removed the last instance
-            my $query = $db->prepare( $sql->delete_object );
+            my $query = $db->prepare_cached( $sql->delete_object );
             my $rows = $query->execute( $so_id );
 
@@ -596,5 +596,5 @@
     my $stat;
     eval {
-        my $query = $db->prepare( $sql->get_object );
+        my $query = $db->prepare_cached( $sql->get_object );
         my $rows = $query->execute( $key );
 
@@ -625,29 +625,30 @@
 
     my $volume;
-    {
+    eval {
+        # TODO cache this?
         my $query;
-        eval {
-            # TODO cache this?
-            my $rows;
-            if ( $name ) {
-                $query = $db->prepare( $sql->get_storage_volume_byname );
-                $rows = $query->execute( $name );
-            } else {
-                $query = $db->prepare( $sql->get_storage_volume );
-                $rows = $query->execute;
-            }
-
-            # there has to be atleast one storage volume
-            unless ( $rows > 0 ) {
-                $db->rollback;
-
-                $log->logdie( "affected row count is $rows instead of 1" );
-            } else {
-                $db->commit;
-            }
-        };
+        my $rows;
+        if ( $name ) {
+            $query = $db->prepare_cached( $sql->get_storage_volume_byname );
+            $rows = $query->execute( $name );
+        } else {
+            $query = $db->prepare_cached( $sql->get_storage_volume );
+            $rows = $query->execute;
+        }
+
+        # there has to be atleast one storage volume
+        unless ( $rows > 0 ) {
+            $log->logdie( "affected row count is $rows instead of 1" );
+        }
+
+        $volume = $query->fetchrow_hashref->{ 'uri' };
+
+        $query->finish;
+        $db->commit;
+    };
+    if ( $@ ) {
+        $query->finish;
+        $db->rollback;
         $log->logdie( "database error: $@" ) if $@;
-
-        $volume = $query->fetchrow_hashref->{ 'uri' };
     }
 
