juji-io / datalevin

A simple, fast and versatile Datalog database
https://github.com/juji-io/datalevin
Eclipse Public License 1.0
1.07k stars 60 forks source link

orm.lmdbjava.Dbi$MapResizedException on query after reimport 0.8.16 → 0.9.5 #250

Open jdf-id-au opened 1 month ago

jdf-id-au commented 1 month ago

Thanks again for this glorious project.

I tried to upgrade from 0.8.16 → 0.9.5 via a nippy export (using my approach from https://github.com/juji-io/datalevin/issues/216 ) and am getting an exception when trying to query new version. Happy to investigate if asked, but I'll just roll back for the time being to finish another task.

1. Unhandled org.lmdbjava.Dbi$MapResizedException
   Database contents grew beyond environment mapsize (-30785)

     ResultCodeMapper.java:   88  org.lmdbjava.ResultCodeMapper/checkRc
                  Txn.java:  176  org.lmdbjava.Txn/renew
                  java.clj:  130  datalevin.binding.java.Rtx/renew
                  java.clj:  684  datalevin.binding.java.LMDB/get_rtx
                  java.clj:  966  datalevin.binding.java.LMDB/list_count
               storage.clj:  533  datalevin.storage.Store/av_size
                    db.clj:  110  datalevin.db.DB/_count
                 query.clj: 1153  datalevin.query/datom-n/fn
             protocols.clj:   49  clojure.core.protocols/iter-reduce
             protocols.clj:   75  clojure.core.protocols/fn
             protocols.clj:   75  clojure.core.protocols/fn
             protocols.clj:   13  clojure.core.protocols/fn/G
                  core.clj: 6887  clojure.core/reduce
                  core.clj: 6869  clojure.core/reduce
                 query.clj: 1149  datalevin.query/datom-n
                 query.clj: 1147  datalevin.query/datom-n
                 query.clj: 1190  datalevin.query/count-clause-datoms/fn/fn/fn/fn
                  AFn.java:  154  clojure.lang.AFn/applyToHelper
                  AFn.java:  144  clojure.lang.AFn/applyTo
                  core.clj:  669  clojure.core/apply
                  core.clj: 6221  clojure.core/update-in/up
                  core.clj: 6220  clojure.core/update-in/up
                  core.clj: 6222  clojure.core/update-in
                  core.clj: 6208  clojure.core/update-in
               RestFn.java:  445  clojure.lang.RestFn/invoke
                 query.clj: 1189  datalevin.query/count-clause-datoms/fn/fn/fn
                  core.clj: 6232  clojure.core/update
                  core.clj: 6224  clojure.core/update
                 query.clj: 1184  datalevin.query/count-clause-datoms/fn/fn
             protocols.clj:   49  clojure.core.protocols/iter-reduce
             protocols.clj:   75  clojure.core.protocols/fn
             protocols.clj:   75  clojure.core.protocols/fn
             protocols.clj:   13  clojure.core.protocols/fn/G
                  core.clj: 6887  clojure.core/reduce
                  core.clj: 6869  clojure.core/reduce
                 query.clj: 1179  datalevin.query/count-clause-datoms/fn
             protocols.clj:   49  clojure.core.protocols/iter-reduce
             protocols.clj:   75  clojure.core.protocols/fn
             protocols.clj:   75  clojure.core.protocols/fn
             protocols.clj:   13  clojure.core.protocols/fn/G
                  core.clj: 6887  clojure.core/reduce
                  core.clj: 6869  clojure.core/reduce
                 query.clj: 1174  datalevin.query/count-clause-datoms
                 query.clj: 1172  datalevin.query/count-clause-datoms
                 query.clj: 1232  datalevin.query/build-graph
                 query.clj: 1213  datalevin.query/build-graph
                 query.clj: 1665  datalevin.query/-q
                 query.clj: 1662  datalevin.query/-q
                 query.clj: 1897  datalevin.query/q
                 query.clj: 1880  datalevin.query/q
               RestFn.java:  139  clojure.lang.RestFn/applyTo
                  core.clj:  669  clojure.core/apply
                  core.clj:  662  clojure.core/apply
                  core.clj:  420  datalevin.core/q
                  core.clj:  405  datalevin.core/q
huahaiy commented 1 month ago

Try open the DB with a bigger size, e.g. add :kv-opts {:mapsize A-BIGGER-SIZE-THAN-CURRENT} option when you create connection, where A-BIGGER-SIZE-THAN-CURRENT is a number bigger than your current DB size (in MiB) .

Also try upgrade to 0.8.29 first, before moving to 0.9.5. Your method of upgrading may missed something.