[BUG] - unable to set custom contract cache when using custom arweave gateway
dtfiedler opened this issue · 2 comments
dtfiedler commented
Describe the bug
Unable to set custom ContractCache
when using a custom arweave gateway. Appears that the default ContractDefinitionLoader
and ArweaveGatewayBundledContractDefinitionLoader
do not support nor implement the cache methods as seen here and here
To Reproduce
Branch to reproduce in service here
Relevant code:
const arweave = new Arweave({
protocol: 'https'
port: 443
host: 'ar-io.dev'
});
const warp = WarpFactory.forMainnet(
{ ...defaultCacheOptions, inMemory: false },
true,
arweave,
)
.useStateCache(
new LmdbCache(
{
...defaultCacheOptions,
dbLocation: `./cache/warp/lmdb/state`,
},
{
minEntriesPerContract: 0,
maxEntriesPerContract: 100,
},
),
)
.useContractCache(
new LmdbCache(
{
...defaultCacheOptions,
dbLocation: `./cache/warp/lmdb/contract`,
},
{
minEntriesPerContract: 0,
maxEntriesPerContract: 100,
},
),
new LmdbCache(
{
...defaultCacheOptions,
dbLocation: `./cache/warp/lmdb/source`,
},
{
minEntriesPerContract: 0,
maxEntriesPerContract: 100,
},
),
);
Error:
Error: No cache implemented for this loader
at ContractDefinitionLoader.setSrcCache (/example-warp-evaluator/node_modules/warp-contracts/src/core/modules/impl/ContractDefinitionLoader.ts:156:11)
at Warp.useContractCache (/example-warp-evaluator/node_modules/warp-contracts/src/core/Warp.ts:150:27)
at Object.<anonymous> (/example-warp-evaluator/src/middleware/warp.ts:53:4)
at Module._compile (node:internal/modules/cjs/loader:1256:14)
at Module.m._compile (/example-warp-evaluator/node_modules/ts-node/src/index.ts:1618:23)
at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
at Object.require.extensions.<computed> [as .ts] (/example-warp-evaluator/node_modules/ts-node/src/index.ts:1621:12)
at Module.load (node:internal/modules/cjs/loader:1119:32)
at Function.Module._load (node:internal/modules/cjs/loader:960:12)
at Module.require (node:internal/modules/cjs/loader:1143:19)
Expected behavior
You can provide useContractCache()
with lmdb
(and other SortKey
caches) in the same manner you can when useArweaveGw
is set to false
in the WarpFactory
.
Desktop (please complete the following information):
- OS: Mac OS
- Node.js version: Node 18.17.1
- warp-contracts SDK version: 1.4.22
- warp-contracts plugins being used (+ versions): N/A
ppedziwiatr commented
yeah, I admit that caching is not implemented for the Arweave loaders - we will try to fix it soon (probably next week..)
ppedziwiatr commented
released in 1.4.33