-
Notifications
You must be signed in to change notification settings - Fork 76
Closed
Description
Concureent setItem and getItem can lead into an unahdled does not look like a valid storage file:
parse error: {} for: Error: [node-persist][readFile] .node-persist/storage/37b51d194a7513e45b56f6524f2d51f2 does not look like a validstorage file! at fs.readFile (node_modules/node-persist/src/local-storage.js:278:66) at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:525:3)
The code used to reproduce create that error was:
const localdb = require('node-persist')
const storage = localdb.create({ ttl: true, logging: true })
async function test2 () {
await storage.setItem('bar', { 'foo': 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.' })
await storage.getItem('bar')
await storage.setItem('bar', { 'foo': 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.' })
await storage.getItem('bar')
await storage.setItem('bar', { 'foo': 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.' })
await storage.getItem('bar')
}
async function test3 () {
await storage.getItem('bar')
await storage.getItem('bar')
await storage.getItem('bar')
await storage.getItem('bar')
await storage.getItem('bar')
}
async function main () {
await storage.init()
try {
await Promise.all([
test2(),
test3(),
test2(),
test3(),
test2()
])
} catch (err) {
console.error(err)
}
}
main().catch(err => {
console.error(err)
})The problem cannot be realiable be reproduces.
Metadata
Metadata
Assignees
Labels
No labels