about summary refs log tree commit diff
path: root/src/libstore/db.cc
AgeCommit message (Collapse)AuthorFilesLines
2007-08-12 * Get rid of the substitutes database table (NIX-47). Instead, if weEelco Dolstra1-1/+12
need any info on substitutable paths, we just call the substituters (such as download-using-manifests.pl) directly. This means that it's no longer necessary for nix-pull to register substitutes or for nix-channel to clear them, which makes those operations much faster (NIX-95). Also, we don't have to worry about keeping nix-pull manifests (in /nix/var/nix/manifests) and the database in sync with each other. The downside is that there is some overhead in calling an external program to get the substitutes info. For instance, "nix-env -qas" takes a bit longer. Abolishing the substitutes table also makes the logic in local-store.cc simpler, as we don't need to store info for invalid paths. On the downside, you cannot do things like "nix-store -qR" on a substitutable but invalid path (but nobody did that anyway). * Never catch interrupts (the Interrupted exception).
2007-05-07 * Create the database directory if it doesn't exist.Eelco Dolstra1-0/+9
2006-10-13 * A helpful message.Eelco Dolstra1-0/+2
2006-10-13 * Don't crash when upgrading the Berkeley DB environment.Eelco Dolstra1-1/+6
2006-09-04 * Use a proper namespace.Eelco Dolstra1-6/+12
* Optimise header file usage a bit. * Compile the parser as C++.
2006-03-01 * db.hh shouldn't depend on the Berkeley DB headers.Eelco Dolstra1-0/+2
2006-03-01 * Close the database before the destructor runs.Eelco Dolstra1-0/+2
2006-03-01 * Remove dead code.Eelco Dolstra1-30/+0
2005-12-25 * More GCC 2.95 compatibility.Eelco Dolstra1-1/+1
2005-12-12 * Automatically delete the old referers table.Eelco Dolstra1-4/+24
2005-12-12 * Fix NIX-23: quadratic complexity in maintaining the referersEelco Dolstra1-9/+20
mapping. The referer table is replaced by a referrer table (note spelling fix) that stores each referrer separately. That is, instead of having referer[P] = {Q_1, Q_2, Q_3, ...} we store referer[(P, Q_1)] = "" referer[(P, Q_2)] = "" referer[(P, Q_3)] = "" ... To find the referrers of P, we enumerate over the keys with a value lexicographically greater than P. This requires the referrer table to be stored as a B-Tree rather than a hash table. (The tuples (P, Q) are stored as P + null-byte + Q.) Old Nix databases are upgraded automatically to the new schema.
2005-12-09 * Use Berkeley DB 4.4's process registry feature to recover fromEelco Dolstra1-99/+56
crashed Nix instances, and toss out our own recovery code.
2005-12-06 * Require Berkeley DB 4.4.Eelco Dolstra1-1/+3
* Checkpoint after an upgrade.
2005-05-09 * Automatically upgrade the Berkeley DB environment if necessary.Eelco Dolstra1-106/+131
2005-03-03 * Increase Berkeley DB limits a bit more.Eelco Dolstra1-3/+3
* Maintain the cleanup invariant in clearSubstitutes().
2005-02-09 * Commit more often to prevent out-of-memory errors.Eelco Dolstra1-4/+12
2005-02-09 * Automatically upgrade <= 0.7 Nix stores to the new schema (so thatEelco Dolstra1-1/+1
existing user environments continue to work). * `nix-store --verify': detect incomplete closures.
2004-10-25 * Allow certain operations to succeed even if we don't have writeEelco Dolstra1-2/+11
permission to the Nix store or database. E.g., `nix-env -qa' will work, but `nix-env -qas' won't (the latter needs DB access). The option `--readonly-mode' forces this mode; otherwise, it's only activated when the database cannot be opened.
2004-08-31 * Quadruple the Berkeley DB locking limits to get rid of out of memoryEelco Dolstra1-2/+21
errors while running `nix-store --verify'.
2004-06-28 * Added a switch `--fallback'. From the manual:Eelco Dolstra1-2/+5
Whenever Nix attempts to realise a derivation for which a closure is already known, but this closure cannot be realised, fall back on normalising the derivation. The most common scenario in which this is useful is when we have registered substitutes in order to perform binary distribution from, say, a network repository. If the repository is down, the realisation of the derivation will fail. When this option is specified, Nix will build the derivation instead. Thus, binary installation falls back on a source installation. This option is not the default since it is generally not desirable for a transient failure in obtaining the substitutes to lead to a full build from source (with the related consumption of resources).
2004-06-21 * Disable calls to fsync() since Berkeley DB's DB_TXN_WRITE_NOSYNCEelco Dolstra1-0/+8
flag doesn't seem to work as advertised.
2004-06-20 * Refactoring.Eelco Dolstra1-41/+2
2004-01-15 * Catch SIGINT to terminate cleanly when the user tries to interruptEelco Dolstra1-1/+8
Nix. This is to prevent Berkeley DB from becoming wedged. Unfortunately it is not possible to throw C++ exceptions from a signal handler. In fact, you can't do much of anything except change variables of type `volatile sig_atomic_t'. So we set an interrupt flag in the signal handler and check it at various strategic locations in the code (by calling checkInterrupt()). Since this is unlikely to cover all cases (e.g., (semi-)infinite loops), sometimes SIGTERM may now be required to kill Nix.
2004-01-13 * Periodically checkpoint the log.Eelco Dolstra1-1/+3
2004-01-13 * Tricky: make sure that the accessor count is not reset to 0 ifEelco Dolstra1-1/+5
recovery fails.
2004-01-07 * Upgraded to Berkeley DB 4.2.52. The main advantage of 4.2 is thatEelco Dolstra1-1/+1
it automatically removes log files when they are no longer needed. *** IMPORTANT *** If you have an existing Nix installation, you must checkpoint the Nix database to prevent recent transactions from being undone. Do the following: - optional: make a backup of $prefix/var/nix/db. - run `db_checkpoint' from Berkeley DB 4.1: $ db_checkpoint -h $prefix/var/nix/db -1 - optional (?): run `db_recover' from Berkeley DB 4.1: $ db_recover -h $prefix/var/nix/db - remove $prefix/var/nix/db/log* and $prefix/var/nix/db/__db*
2003-11-19 * nix-env: a tool to manage user environments.Eelco Dolstra1-2/+2
* Replace all directory reading code by a generic readDirectory() function.
2003-11-18 * libnix -> libstore.Eelco Dolstra1-0/+425