Skip to content

Commit 8cd1bcd

Browse files
committed
Fixed used size calculation logic
References: #32
1 parent 8e6fdd3 commit 8cd1bcd

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

src/LightningDB.Tests/EnvironmentTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ public void CanGetUsedSize()
152152
_env = new LightningEnvironment(_path, EnvironmentOpenFlags.None);
153153
_env.Open();
154154

155+
var initialUsedSize = _env.UsedSize;
156+
155157
using (var txn = _env.BeginTransaction())
156158
using (var db = txn.OpenDatabase(null, DatabaseOpenFlags.None))
157159
{
@@ -162,10 +164,10 @@ public void CanGetUsedSize()
162164
}
163165

164166
//act
165-
var size = _env.UsedSize;
167+
var sizeDelta = _env.UsedSize - initialUsedSize;
166168

167169
//act-assert;
168-
Assert.AreEqual(_env.PageSize, size);
170+
Assert.AreEqual(_env.PageSize, sizeDelta);
169171
}
170172

171173
}

src/LightningDB/LightningEnvironment.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,10 @@ public long UsedSize
117117
{
118118
get
119119
{
120-
var stat = GetStat();
121-
var totalPages =
122-
stat.ms_branch_pages.ToInt64() +
123-
stat.ms_leaf_pages.ToInt64() +
124-
stat.ms_overflow_pages.ToInt64();
120+
var envInfo = new MDBEnvInfo();
121+
NativeMethods.Execute(lib => lib.mdb_env_info(_handle, out envInfo));
125122

126-
return stat.ms_psize * totalPages;
123+
return envInfo.me_last_pgno.ToInt64() * PageSize;
127124
}
128125
}
129126

0 commit comments

Comments
 (0)