Update of /project/elephant/cvsroot/elephant/src/elephant In directory clnet:/tmp/cvs-serv2630/src/elephant
Modified Files: migrate.lisp Log Message: Fixed migrate bug that created new dst objects for each src persistent object
--- /project/elephant/cvsroot/elephant/src/elephant/migrate.lisp 2007/02/26 19:12:18 1.9 +++ /project/elephant/cvsroot/elephant/src/elephant/migrate.lisp 2007/03/09 00:44:35 1.10 @@ -48,10 +48,11 @@ ;; other way to do comparisons between objects across stores (different ;; oid namespaces) so user beware of the pitfalls of partial migrations... ;; -;; - Migrate keeps a memory-resident hash of all objects; this means -;; you cannot currently migrate a store that has more data than your -;; main memory. (This could be fixed by keeping the oid table in -;; the target store and deleting it on completion) +;; - Migrate keeps a memory-resident hash of all persistent objects; +;; this is not as bad as it sounds as an object is only an oid reference +;; and a pointer to the store controller it belongs to. However, you +;; may eventually run out of heap space for very large DB's. We can use +;; the old DB to store the mappings if this becomes a problem. ;; ;; - Migration does not maintain OID equivalence so any datastructures which ;; index into those will have to have a way to reconstruct themselves (better @@ -73,6 +74,7 @@ ;;
+ (defgeneric migrate (dst src) (:documentation "Migrate an object from the src object, collection or controller @@ -96,7 +98,7 @@
;; ERROR CHECKING
-(defmethod migrate :around ((dst store-controller) (src t)) +(defmethod migrate :around ((dst store-controller) (src store-controller)) "This method ensures that we wipe our duplication detection around any top level call to migrate" (if *migrating*