@@ -48,15 +48,15 @@ type TxInterceptor interface {
4848}
4949
5050type Populator interface {
51- Populate (rws * ReadWriteSet , rwsetBytes []byte , namespaces ... driver.Namespace ) error
51+ Populate (rwsetBytes []byte , namespaces ... driver.Namespace ) ( ReadWriteSet , error )
5252}
5353
5454type Marshaller interface {
5555 Marshal (txID string , rws * ReadWriteSet ) ([]byte , error )
5656 Append (destination * ReadWriteSet , raw []byte , nss ... string ) error
5757}
5858
59- type NewInterceptorFunc [V driver.ValidationCode ] func (logger Logger , qe VersionedQueryExecutor , txidStore TXIDStoreReader [V ], txid driver.TxID ) TxInterceptor
59+ type NewInterceptorFunc [V driver.ValidationCode ] func (logger Logger , rwSet ReadWriteSet , qe VersionedQueryExecutor , txidStore TXIDStoreReader [V ], txid driver.TxID ) TxInterceptor
6060
6161type (
6262 VersionedPersistence = dbdriver.VersionedPersistence
@@ -447,7 +447,7 @@ func (db *Vault[V]) NewRWSet(txID driver.TxID) (driver.RWSet, error) {
447447
448448func (db * Vault [V ]) NewInspector (txID driver.TxID ) (TxInterceptor , error ) {
449449 db .logger .Debugf ("NewRWSet[%s][%d]" , txID , db .counter .Load ())
450- i := db .newInterceptor (db .logger , & interceptorQueryExecutor [V ]{db }, db .txIDStore , txID )
450+ i := db .newInterceptor (db .logger , EmptyRWSet (), & interceptorQueryExecutor [V ]{db }, db .txIDStore , txID )
451451
452452 db .interceptorsLock .Lock ()
453453 if _ , in := db .Interceptors [txID ]; in {
@@ -469,12 +469,13 @@ func (db *Vault[V]) NewInspector(txID driver.TxID) (TxInterceptor, error) {
469469
470470func (db * Vault [V ]) GetRWSet (txID driver.TxID , rwsetBytes []byte ) (driver.RWSet , error ) {
471471 db .logger .Debugf ("GetRWSet[%s][%d]" , txID , db .counter .Load ())
472- i := db .newInterceptor (db .logger , & interceptorQueryExecutor [V ]{db }, db .txIDStore , txID )
473-
474- if err := db .populator .Populate (i .RWs (), rwsetBytes ); err != nil {
472+ rwSet , err := db .populator .Populate (rwsetBytes )
473+ if err != nil {
475474 return nil , errors .Wrapf (err , "failed populating tx [%s]" , txID )
476475 }
477476
477+ i := db .newInterceptor (db .logger , rwSet , & interceptorQueryExecutor [V ]{db }, db .txIDStore , txID )
478+
478479 db .interceptorsLock .Lock ()
479480 if i , in := db .Interceptors [txID ]; in {
480481 if ! i .IsClosed () {
@@ -496,13 +497,11 @@ func (db *Vault[V]) GetRWSet(txID driver.TxID, rwsetBytes []byte) (driver.RWSet,
496497}
497498
498499func (db * Vault [V ]) InspectRWSet (rwsetBytes []byte , namespaces ... driver.Namespace ) (driver.RWSet , error ) {
499- i := NewInspector ()
500-
501- if err := db .populator .Populate (& i .Rws , rwsetBytes , namespaces ... ); err != nil {
500+ rwSet , err := db .populator .Populate (rwsetBytes , namespaces ... )
501+ if err != nil {
502502 return nil , errors .Wrapf (err , "failed populating ephemeral txID" )
503503 }
504-
505- return i , nil
504+ return & Inspector {Rws : rwSet }, nil
506505}
507506
508507func (db * Vault [V ]) Match (txID driver.TxID , rwsRaw []byte ) error {
0 commit comments