GP-4374: 'Pure' Emulation uses Object-based trace.

This commit is contained in:
Dan
2024-03-01 14:50:39 -05:00
parent 63e64d5b28
commit 55b07206e3
21 changed files with 463 additions and 180 deletions

View File

@@ -573,7 +573,12 @@ public class DBTraceObjectManager implements TraceObjectManager, DBTraceManager
public <I extends TraceObjectInterface> I getObjectByPath(long snap, String path,
Class<I> iface) {
try (LockHold hold = trace.lockRead()) {
return getObjectsByPath(Lifespan.at(snap), TraceObjectKeyPath.parse(path)).findAny()
TraceObjectKeyPath parsed = TraceObjectKeyPath.parse(path);
DBTraceObject object = getObjectByCanonicalPath(parsed);
if (object != null) {
return object.queryInterface(iface);
}
return getObjectsByPath(Lifespan.at(snap), parsed).findAny()
.map(o -> o.queryInterface(iface))
.orElse(null);
}

View File

@@ -803,8 +803,8 @@ public class ToyDBTraceBuilder implements AutoCloseable {
* @param path the path pattern
* @return the object or null
*/
public TraceObject objAny(String pat) {
return objAny(pat, Lifespan.at(0));
public TraceObject objAny(String path) {
return objAny(path, Lifespan.at(0));
}
public TraceObject objAny(String path, Lifespan span) {