How to get more info on an IO exception

A

alejandrina

Hi all,

We have a process that occassionally throws an I/O Exception when
trying to lock a Linux file for writing.

java.io.IOException: Input/output error
at sun.nio.ch.FileChannelImpl.lock0(Native Method)
at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:
882)
at java.nio.channels.FileChannel.tryLock(FileChannel.java:962)
at
com.pdx.science.utils.SyncFileWriter.write(SyncFileWriter.java:58)
at
com.pdx.science.pm.learning.PMResultRecorder.record(PMResultRecorder.java:
49)
at
com.pdx.science.pm.learning.SVMModelSelector.processValueSet(SVMModelSelector.java:
279)
at
com.pdx.science.pm.learning.SVMModelSelector.process(SVMModelSelector.java:
178)
at
com.pdx.science.pm.learning.SVMModelSelector.run(SVMModelSelector.java:
134)
at
com.pdx.science.pm.learning.SVMModelSelector.main(SVMModelSelector.java:
589)


We'd love to know what is actually happening (network error, NFS
error...) Is there any more information that can be obtained from the
I/O Exception? How does one get it?

Thanks,

Alejandrina
 
M

Martin Gregorie

alejandrina said:
We'd love to know what is actually happening (network error, NFS
error...) Is there any more information that can be obtained from the
I/O Exception? How does one get it?
As the error is in native code I'd guess that the OS might tell you more
that filters up through Exceptions. Have you looked at the system
logs, /var/log/messages in particular?
 
A

alejandrina

As the error is in native code I'd guess that the OS might tell you more
that filters up through Exceptions. Have you looked at the system
logs, /var/log/messages in particular?


Nothing there that we can see. I wanted to see if there was a
mechanism to "unwrap" the exception to get more info, but I guess
there is no such thing.
 
R

Roedy Green

We'd love to know what is actually happening (network error, NFS
error...) Is there any more information that can be obtained from the
I/O Exception? How does one get it?

I suppose you could discover the precise class of the IOExceptions you
are getting by dumping e.getClass in your catch block. , then add a
catch clause for that particular class ahead of the general
IOException catch,, then you have access to any additional fields or
methods it has.
 
K

Knute Johnson

alejandrina said:
Hi all,

We have a process that occassionally throws an I/O Exception when
trying to lock a Linux file for writing.

java.io.IOException: Input/output error
at sun.nio.ch.FileChannelImpl.lock0(Native Method)
at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:
882)
at java.nio.channels.FileChannel.tryLock(FileChannel.java:962)
at
com.pdx.science.utils.SyncFileWriter.write(SyncFileWriter.java:58)
at
com.pdx.science.pm.learning.PMResultRecorder.record(PMResultRecorder.java:
49)
at
com.pdx.science.pm.learning.SVMModelSelector.processValueSet(SVMModelSelector.java:
279)
at
com.pdx.science.pm.learning.SVMModelSelector.process(SVMModelSelector.java:
178)
at
com.pdx.science.pm.learning.SVMModelSelector.run(SVMModelSelector.java:
134)
at
com.pdx.science.pm.learning.SVMModelSelector.main(SVMModelSelector.java:
589)


We'd love to know what is actually happening (network error, NFS
error...) Is there any more information that can be obtained from the
I/O Exception? How does one get it?

Thanks,

Alejandrina

Did getCause() have any info?
 
A

Andreas Leitgeb

Roedy Green said:
I suppose you could discover the precise class of the IOExceptions you
are getting by dumping e.getClass in your catch block. , then add a
catch clause for that particular class ahead of the general
IOException catch,, then you have access to any additional fields or
methods it has.

In case this doesn't work out (that is: the getClass() also returns
just IOException), then maybe further information is just an
ioExc.getCause() away :)
 
A

alejandrina

Did getCause() have any info?

I did a test with a manufactured IOEception. getCause() returned the
exception message. And of course now that we have a catch for
IOException, the app is not failing, so I don't know what a real
IOException yields...
 
K

Knute Johnson

alejandrina said:
I did a test with a manufactured IOEception. getCause() returned the
exception message. And of course now that we have a catch for
IOException, the app is not failing, so I don't know what a real
IOException yields...

Sometimes it is just magic. I've got a program in the field that has
been running 24/7 for the last year. Then all of a sudden it starts
having problems. I make about six changes, requiring me to stay up to
all hours because they can't have it down in the daytime, and then it
stops just as mysteriously as it started.

And if it is running on Windows...
 
A

alejandrina

Sometimes it is just magic. I've got a program in the field that has
been running 24/7 for the last year. Then all of a sudden it starts
having problems. I make about six changes, requiring me to stay up to
all hours because they can't have it down in the daytime, and then it
stops just as mysteriously as it started.

And if it is running on Windows...

Yes, it's not quite software "engineering", eh?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,436
Messages
2,571,696
Members
48,796
Latest member
Greg L.
Top