@@ -18,7 +18,7 @@ const parse = require('./utils').parse
1818const fetch = require ( 'node-fetch' )
1919const { promisify } = require ( 'util' )
2020const URI = require ( 'urijs' )
21- const { lock } = require ( 'proper-lockfile ' )
21+ const withLock = require ( './lock ' )
2222
2323const RDF_MIME_TYPES = new Set ( [
2424 'text/turtle' , // .ttl
@@ -78,17 +78,11 @@ class LDP {
7878 }
7979
8080 async readResource ( url ) {
81- let releaseLock
8281 try {
8382 const { path } = await this . resourceMapper . mapUrlToFile ( { url } )
84- releaseLock = await lock ( path , { retries : 10 } )
85- return await promisify ( fs . readFile ) ( path , { encoding : 'utf8' } )
83+ return await withLock ( path , ( ) => promisify ( fs . readFile ) ( path , { encoding : 'utf8' } ) )
8684 } catch ( err ) {
8785 throw error ( err . status , err . message )
88- } finally {
89- if ( releaseLock ) {
90- await releaseLock ( )
91- }
9286 }
9387 }
9488
@@ -244,24 +238,16 @@ class LDP {
244238 }
245239
246240 // Directory created, now write the file
247- let releaseLock
248- try {
249- releaseLock = await lock ( path , { retries : 10 , realpath : false } )
250- return await new Promise ( ( resolve , reject ) => {
251- const file = stream . pipe ( fs . createWriteStream ( path ) )
252- file . on ( 'error' , function ( ) {
253- reject ( error ( 500 , 'Error writing data' ) )
254- } )
255- file . on ( 'finish' , function ( ) {
256- debug . handlers ( 'PUT -- Wrote data to: ' + path )
257- resolve ( )
258- } )
241+ return withLock ( path , { mustExist : false } , ( ) => new Promise ( ( resolve , reject ) => {
242+ const file = stream . pipe ( fs . createWriteStream ( path ) )
243+ file . on ( 'error' , function ( ) {
244+ reject ( error ( 500 , 'Error writing data' ) )
259245 } )
260- } finally {
261- if ( releaseLock ) {
262- await releaseLock ( )
263- }
264- }
246+ file . on ( 'finish' , function ( ) {
247+ debug . handlers ( 'PUT -- Wrote data to: ' + path )
248+ resolve ( )
249+ } )
250+ } ) )
265251 }
266252
267253 async exists ( hostname , path , searchIndex = true ) {
@@ -379,26 +365,18 @@ class LDP {
379365 chunksize = ( end - start ) + 1
380366 contentRange = 'bytes ' + start + '-' + end + '/' + total
381367 }
382- let releaseLock
383- try {
384- releaseLock = await lock ( path , { retries : 10 } )
385- return await new Promise ( ( resolve , reject ) => {
386- const stream = fs . createReadStream ( path , start && end ? { start, end} : { } )
387- stream
388- . on ( 'error' , function ( err ) {
389- debug . handlers ( `GET -- error reading ${ path } : ${ err . message } ` )
390- return reject ( error ( err , "Can't read file " + err ) )
391- } )
392- . on ( 'open' , function ( ) {
393- debug . handlers ( `GET -- Reading ${ path } ` )
394- return resolve ( { stream, contentType, container : false , contentRange, chunksize } )
395- } )
396- } )
397- } finally {
398- if ( releaseLock ) {
399- await releaseLock ( )
400- }
401- }
368+ return withLock ( path , ( ) => new Promise ( ( resolve , reject ) => {
369+ const stream = fs . createReadStream ( path , start && end ? { start, end} : { } )
370+ stream
371+ . on ( 'error' , function ( err ) {
372+ debug . handlers ( `GET -- error reading ${ path } : ${ err . message } ` )
373+ return reject ( error ( err , "Can't read file " + err ) )
374+ } )
375+ . on ( 'open' , function ( ) {
376+ debug . handlers ( `GET -- Reading ${ path } ` )
377+ return resolve ( { stream, contentType, container : false , contentRange, chunksize } )
378+ } )
379+ } ) )
402380 }
403381 }
404382
@@ -447,17 +425,11 @@ class LDP {
447425 }
448426
449427 async deleteResource ( path ) {
450- let releaseLock
451428 try {
452- releaseLock = await lock ( path , { retries : 10 } )
453- return await promisify ( fs . unlink ) ( path )
429+ return await withLock ( path , { mustExist : false } , ( ) => promisify ( fs . unlink ) ( path ) )
454430 } catch ( err ) {
455431 debug . container ( 'DELETE -- unlink() error: ' + err )
456432 throw error ( err , 'Failed to delete resource' )
457- } finally {
458- if ( releaseLock ) {
459- await releaseLock ( )
460- }
461433 }
462434 }
463435
0 commit comments