[elephant-cvs] CVS elephant/src/elephant
ieslick
ieslick at common-lisp.net
Fri Mar 9 00:44:35 UTC 2007
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*
More information about the Elephant-cvs
mailing list