Skip to content

LeiosDb: bound the WAL, remove the write hotspot, stop dying on lock contention - #2245

Merged
ch1bo merged 3 commits into
ch1bo/leios-eb-validationfrom
ch1bo/leios-db-fixes
Aug 29, 2026
Merged

LeiosDb: bound the WAL, remove the write hotspot, stop dying on lock contention#2245
ch1bo merged 3 commits into
ch1bo/leios-eb-validationfrom
ch1bo/leios-db-fixes

LeiosDb: index the txs an EB is waiting for, not every tx it mentions

2a18f25
Select commit
Loading
Failed to load commit list.
IOG Hydra / ci/eval:x86_64-linux.required.windows failed Aug 29, 2026 in 11s

Evaluation failed

Checkout took 8s.
Evaluation took 5 min 2s.

Details

Evaluation error:

error:
       … from call site
         at /nix/store/jb4jpyiz8dqz1ximc36pnaa7jj6lag4z-source/nix/ci.nix:59:20:
           58|     name = "required-consensus";
           59|     constituents = lib.collect lib.isDerivation jobs;
             |                    ^
           60|   };

       … while calling 'collect'
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:872:11:
          871|   collect =
          872|     pred: attrs:
             |           ^
          873|     if pred attrs then

       … while calling the 'concatMap' builtin
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:876:7:
          875|     else if isAttrs attrs then
          876|       concatMap (collect pred) (attrValues attrs)
             |       ^
          877|     else

       … while calling 'collect'
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:872:11:
          871|   collect =
          872|     pred: attrs:
             |           ^
          873|     if pred attrs then

       … while calling the 'concatMap' builtin
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:876:7:
          875|     else if isAttrs attrs then
          876|       concatMap (collect pred) (attrValues attrs)
             |       ^
          877|     else

       … while calling 'collect'
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:872:11:
          871|   collect =
          872|     pred: attrs:
             |           ^
          873|     if pred attrs then

       … while evaluating a branch condition
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:873:5:
          872|     pred: attrs:
          873|     if pred attrs then
             |     ^
          874|       [ attrs ]

       … from call site
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:873:8:
          872|     pred: attrs:
          873|     if pred attrs then
             |        ^
          874|       [ attrs ]

       … while calling 'isDerivation'
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:1413:18:
         1412|   */
         1413|   isDerivation = value: value.type or null == "derivation";
             |                  ^
         1414|

       … while evaluating a branch condition
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:706:34:
          705|           [
          706|             (nameValuePair name (if isAttrs v then filterAttrsRecursive pred v else v))
             |                                  ^
          707|           ]

       … while calling the 'isAttrs' builtin
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:706:37:
          705|           [
          706|             (nameValuePair name (if isAttrs v then filterAttrsRecursive pred v else v))
             |                                     ^
          707|           ]

       … while evaluating the attribute 'build'
         at /nix/store/jb4jpyiz8dqz1ximc36pnaa7jj6lag4z-source/nix/ci.nix:24:7:
           23|     {
           24|       build =
             |       ^
           25|         setGitRevs (haskellLib.mkFlakePackages projectHsPkgs);

       … from call site
         at /nix/store/jb4jpyiz8dqz1ximc36pnaa7jj6lag4z-source/nix/ci.nix:25:9:
           24|       build =
           25|         setGitRevs (haskellLib.mkFlakePackages projectHsPkgs);
             |         ^
           26|       checks =

       … while calling 'mapAttrsRecursiveCond'
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:1183:14:
         1182|   mapAttrsRecursiveCond =
         1183|     cond: f: set:
             |              ^
         1184|     let

       … while calling the 'mapAttrs' builtin
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:1192:5:
         1191|     in
         1192|     recurse [ ] set;
             |     ^
         1193|

       … from call site
         at /nix/store/jb4jpyiz8dqz1ximc36pnaa7jj6lag4z-source/nix/ci.nix:25:21:
           24|       build =
           25|         setGitRevs (haskellLib.mkFlakePackages projectHsPkgs);
             |                     ^
           26|       checks =

       … while calling 'foldrAttrVals'
         at /nix/store/5d3y1nk6nv4rrhkv3ywqn67fl02fhvqp-source/lib/default.nix:37:25:
           36|
           37|   foldrAttrVals = f: z: attrs:
             |                         ^
           38|     lib.foldr f z (builtins.attrValues attrs);

       … from call site
         at /nix/store/5d3y1nk6nv4rrhkv3ywqn67fl02fhvqp-source/lib/default.nix:38:5:
           37|   foldrAttrVals = f: z: attrs:
           38|     lib.foldr f z (builtins.attrValues attrs);
             |     ^
           39|

       … while calling 'foldr'
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/lists.nix:138:14:
          137|   foldr =
          138|     op: nul: list:
             |              ^
          139|     let

       … from call site
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/lists.nix:143:5:
          142|     in
          143|     fold' 0;
             |     ^
          144|

       … while calling 'fold''
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/lists.nix:141:15:
          140|       len = length list;
          141|       fold' = n: if n == len then nul else op (elemAt list n) (fold' (n + 1));
             |               ^
          142|     in

       … while evaluating a branch condition
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/lists.nix:141:18:
          140|       len = length list;
          141|       fold' = n: if n == len then nul else op (elemAt list n) (fold' (n + 1));
             |                  ^
          142|     in

       … while calling the 'length' builtin
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/lists.nix:140:13:
          139|     let
          140|       len = length list;
             |             ^
          141|       fold' = n: if n == len then nul else op (elemAt list n) (fold' (n + 1));

       … while calling the 'attrValues' builtin
         at /nix/store/5d3y1nk6nv4rrhkv3ywqn67fl02fhvqp-source/lib/default.nix:38:20:
           37|   foldrAttrVals = f: z: attrs:
           38|     lib.foldr f z (builtins.attrValues attrs);
             |                    ^
           39|

       … from call site
         at /nix/store/jb4jpyiz8dqz1ximc36pnaa7jj6lag4z-source/nix/ci.nix:11:9:
           10|       projectHsPkgs =
           11|         haskellLib.selectProjectPackages hsPkgs.hsPkgs;
             |         ^
           12|       projectHsPkgsNoAsserts =

       … while calling 'filterAttrs'
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:663:23:
          662|   */
          663|   filterAttrs = pred: set: removeAttrs set (filter (name: !pred name set.${name}) (attrNames set));
             |                       ^
          664|

       … while calling the 'removeAttrs' builtin
         at /nix/store/jv30dcqv9jd68an58a4inpfan9m6624z-source/lib/attrsets.nix:663:28:
          662|   */
          663|   filterAttrs = pred: set: removeAttrs set (filter (name: !pred name set.${name}) (attrNames set));
             |                            ^
          664|

       … while evaluating the attribute 'hsPkgs'
         at /nix/store/5d3y1nk6nv4rrhkv3ywqn67fl02fhvqp-source/overlays/haskell.nix:740:15:
          739|               # Haskell packages
          740|               hsPkgs = final.lib.mapAttrs (packageName: package':
             |               ^
          741|                 if package' == null

       … while calling the 'mapAttrs' builtin
         at /nix/store/5d3y1nk6nv4rrhkv3ywqn67fl02fhvqp-source/overlays/haskell.nix:740:24:
          739|               # Haskell packages
          740|               hsPkgs = final.lib.mapAttrs (packageName: package':
             |                        ^
          741|                 if package' == null

       … while calling the 'removeAttrs' builtin
         at /nix/store/5d3y1nk6nv4rrhkv3ywqn67fl02fhvqp-source/overlays/haskell.nix:774:20:
          773|                     }
          774|                 ) (builtins.removeAttrs rawProject.hsPkgs
             |                    ^
          775|                   # These are functions not packages

       … while evaluating the attribute 'hsPkgs'
         at /nix/store/5d3y1nk6nv4rrhkv3ywqn67fl02fhvqp-source/overlays/haskell.nix:708:44:
          707|               project = addProjectAndPackageAttrs rec {
          708|                   inherit (pkg-set.config) hsPkgs;
             |                                            ^
          709|                   inherit pkg-set;

       … while evaluating a branch condition
         at /nix/store/5d3y1nk6nv4rrhkv3ywqn67fl02fhvqp-source/overlays/haskell.nix:676:25:
          675|                 else project;
          676|               pkg-set = if plan-pkgs ? configurationError
             |                         ^
          677|                 then {

       … while evaluating a branch condition
         at /nix/store/5d3y1nk6nv4rrhkv3ywqn67fl02fhvqp-source/overlays/haskell.nix:661:27:
          660|               callProjectResults = callCabalProjectToNix config;
          661|               plan-pkgs = if !builtins.pathExists (callProjectResults.projectNix + "/plan.json")
             |                           ^
          662|                 then

       … in the argument of the not operator
         at /nix/store/5d3y1nk6nv4rrhkv3ywqn67fl02fhvqp-source/overlays/haskell.nix:661:31:
          660|               callProjectResults = callCabalProjectToNix config;
          661|               plan-pkgs = if !builtins.pathExists (callProjectResults.projectNix + "/plan.json")
             |                               ^
          662|                 then

       … while calling the 'pathExists' builtin
         at /nix/store/5d3y1nk6nv4rrhkv3ywqn67fl02fhvqp-source/overlays/haskell.nix:661:31:
          660|               callProjectResults = callCabalProjectToNix config;
          661|               plan-pkgs = if !builtins.pathExists (callProjectResults.projectNix + "/plan.json")
             |                               ^
          662|                 then

       … while realising the context of path '/nix/store/lnr2kspwkwr1djapjfla69g7jwwdp23i-haskell-project-plan-to-nix-pkgs/plan.json'

       error: Cannot build '/nix/store/c6y7xmldfd1ajvg48ymq042sh7lv8mvj-haskell-project-plan-to-nix-pkgs.drv'.
       Reason: builder failed with exit code 1.
       Output paths:
         /nix/store/9y18z98zb820knh5ds5l4rsmqc7k2pjg-haskell-project-plan-to-nix-pkgs-freeze
         /nix/store/lnr2kspwkwr1djapjfla69g7jwwdp23i-haskell-project-plan-to-nix-pkgs
       Last 25 log lines:
       > remote: Total 492 (delta 30), reused 0 (delta 0), pack-reused 0 (from 0)
       > Receiving objects: 100% (492/492), 517.85 KiB | 13.28 MiB/s, done.
       > Resolving deltas: 100% (30/30), done.
       > From file:///nix/store/nnzzfd7fqr5zykyq9zk98nhi3vr160jy-source-repository-package
       >  * branch            minimal    -> FETCH_HEAD
       > HEAD is now at a534bfd Minimal Repo For Haskell.Nix
       > Warning: The package list for 'hackage.haskell.org' is 20694 days old.
       > Run 'cabal update' to get the latest list of available packages.
       > Warning: The package list for 'cardano-haskell-packages' is 20694 days old.
       > Run 'cabal update' to get the latest list of available packages.
       > Resolving dependencies...
       > Error: [Cabal-7107]
       > Could not resolve dependencies:
       > [__0] trying: cardano-binary-1.9.1.0 (user goal)
       > [__1] trying: base-4.18.3.0/installed-4.18.3.0 (dependency of cardano-binary)
       > [__2] trying: ouroboros-consensus-3.0.1.0 (user goal)
       > [__3] trying: ouroboros-consensus:*bench
       > [__4] next goal: unix (dependency of ouroboros-consensus *bench)
       > [__4] rejecting: unix; 2.8.8.0, 2.8.7.0, 2.8.6.0, 2.8.5.1, 2.8.5.0, 2.8.4.0, 2.8.3.0, 2.8.2.1, 2.8.2.0, 2.8.1.1, 2.8.1.0, 2.8.0.0, 2.7.3, 2.7.2.2, 2.7.2.1, 2.7.2.0 (library is not buildable in the current environment, but it is required by ouroboros-consensus *bench)
       > [__4] rejecting: unix-2.7.1.0 (conflict: base==4.18.3.0/installed-4.18.3.0, unix => base>=4.5 && <4.9)
       > [__4] skipping: unix; 2.7.0.1, 2.7.0.0, 2.6.0.1, 2.6.0.0, 2.5.1.1, 2.5.1.0, 2.5.0.0, 2.4.2.0, 2.4.1.0, 2.4.0.2, 2.4.0.1, 2.4.0.0, 2.3.2.0, 2.3.1.0, 2.3.0.0, 2.2.0.0, 2.0 (has the same characteristics that caused the previous version to fail: excludes 'base' version 4.18.3.0)
       > [__4] fail (backjumping, conflict set: base, ouroboros-consensus, unix, ouroboros-consensus:bench)
       > After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: ouroboros-consensus, base, unix, ouroboros-consensus:bench, cardano-binary
       > Try running with --minimize-conflict-set to improve the error message.
       >
       For full logs, run:
         nix log /nix/store/c6y7xmldfd1ajvg48ymq042sh7lv8mvj-haskell-project-plan-to-nix-pkgs.drv