Archived

This forum has been archived. Please start a new discussion on GitHub.

About freeze

add callrecord to Freeze, when the file exceed some size, the program will capture an exception, as follows:

Berkeley DB: DbEnv "db": Lock table is out of available locks
E:\..\ICE-1.2.0\src\Freeze\MapI.cpp:495: Freeze::DatabaseException:
Dbc::get: Not enough space

does it have some limit of the file??? if it does ,how much of the limit???

thanks

Comments

  • bernard
    bernard Jupiter, FL
    You've reached a Berkeley DB limit, probably because you're adding or updating a large number of objects within the same transaction (or iterator, which is equivalent). Please refer to the Freeze chapter in the Ice 1.3.0 book for more details on iterators and transactions.

    If you need more Berkeley DB locks than the default (1000), create a DB_CONFIG file in your Berkeley DB home directory (typically db/), with the following setting:
    set_lk_max_locks <large-number>
    See http://www.sleepycat.com/docs/api_c/env_set_lk_max_locks.html for details.

    Cheers,
    Bernard
  • I creat a file named DB_CONFIG.cfg in my DB directory,with the following setting:
    set_lk_max_locks 1000000

    But I can't resolve the question, why?

    would you please give me an example? thanks!
  • bernard
    bernard Jupiter, FL
    The name must be DB_CONFIG, not DB_CONFIG.cfg. There is one example, the Freeze/backup demo; but it does not work on Windows (because it uses shell scripts).

    Cheers,
    Bernard
  • when i creat a file named DB_CONFIG in my DB directory, my program does not work, the following is the error:

    [ accountcenter: Berkeley DB: DbEnv "db": malloc: No such file or directory: 675241984 ]
    [ accountcenter: Berkeley DB: DbEnv "db": PANIC: No such file or directory ]
    [ accountcenter: Berkeley DB: DbEnv "db": fatal region error detected; run recovery ]
    E:\..\ICE-1.2.0\src\Freeze\SharedDbEnv.cpp:357: Freeze::DatabaseException:
    DbEnv::open: DB_RUNRECOVERY: Fatal error, run database recovery

    can you tell me why? and how to resovle ?

    thanks a lot for your reply!
  • bernard
    bernard Jupiter, FL
    It looks like your database is inconsistent. I would recommend to remove all the files in your db directory except DB_CONFIG.

    If the files are valuable, you need to use Berkeley DB's db_recover utility:
    % db_recover -c -h db

    Cheers,
    Bernard