Check Flock Status on File

I have a daemon that is checking files as they are uploaded by FTP and
processing them accordingly.
I noticed that occasionally the files are truncated, and have put this
down to the file currently being written by the FTP server as im
reading it.
I would like to check the lock status on the file, so I will only
process the file if it is not write-locked.
How can I check the lock status on a given filename?

fcntl/posix (see posixlock gem) locks export that information but flock, afaik, does not. this seems workable though

http://drawohara.tumblr.com/post/5891548

-a

···

On Jul 15, 2007, at 1:30 PM, Matt wrote:

I have a daemon that is checking files as they are uploaded by FTP and
processing them accordingly.
I noticed that occasionally the files are truncated, and have put this
down to the file currently being written by the FTP server as im
reading it.
I would like to check the lock status on the file, so I will only
process the file if it is not write-locked.
How can I check the lock status on a given filename?

--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama

Thank you kindly,

This looks like a good solution for another project I am working on.
As for the immediate problem I discovered the ftp daemon I am using (proftpd) has an option to use temporary files during upload (HiddenStores on) that seems to have solved the problem I was encountering.

Kind Regards,

Matt

cool. i had pasted the wrong code btw - the right stuff is up there now...

cheers.

http://drawohara.tumblr.com/post/5891548

a @ http://drawohara.com/

···

On Jul 16, 2007, at 9:23 AM, Matt Williams wrote:
--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama

So the code above modifies the File class so that an instance will
include a flocked? method, right?

Is it a good assumption that something like this would eventually make
it into File?

Mike B.

···

On Jul 16, 6:38 am, "ara.t.howard" <ara.t.how...@gmail.com> wrote:

On Jul 15, 2007, at 1:30 PM, Matt wrote:

> I have a daemon that is checking files as they are uploaded by FTP and
> processing them accordingly.
> I noticed that occasionally the files are truncated, and have put this
> down to the file currently being written by the FTP server as im
> reading it.
> I would like to check the lock status on the file, so I will only
> process the file if it is not write-locked.
> How can I check the lock status on a given filename?

fcntl/posix (see posixlock gem) locks export that information but
flock, afaik, does not. this seems workable though

http://drawohara.tumblr.com/post/5891548

-a
--
we can deny everything, except that we have the possibility of being
better. simply reflect on that.
h.h. the 14th dalai lama

So the code above modifies the File class so that an instance will
include a flocked? method, right?

indeed.

Is it a good assumption that something like this would eventually make
it into File?

hmmm. i wouldn't hold my breath - but you could put in an rcr :wink:

a @ http://drawohara.com/

···

On Jul 16, 2007, at 1:25 PM, barjunk wrote:
--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama

OK. I'll keep it lying about then, cause it seems very usefull.

One last thing. So I assume then, that multiple process as well as
multiple threads will maintain the lock properly.

Mike B.

···

On Jul 16, 1:17 pm, "ara.t.howard" <ara.t.how...@gmail.com> wrote:

On Jul 16, 2007, at 1:25 PM, barjunk wrote:

> So the code above modifies the File class so that an instance will
> include a flocked? method, right?

indeed.

> Is it a good assumption that something like this would eventually make
> it into File?

hmmm. i wouldn't hold my breath - but you could put in an rcr :wink:

no - just processes. it's easy to extend ruby's flock to support processes though: just keep state in thread local vars - i think i actually have code lying around that does just that.... (goes hunting...)

a @ http://drawohara.com/

···

On Jul 16, 2007, at 3:39 PM, barjunk wrote:

One last thing. So I assume then, that multiple process as well as
multiple threads will maintain the lock properly.

--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama