見出し画像

「xxxへのアクセスが拒否されました」にハマった話

お客さんからの要望があって、その要望を満たす機能を追加してテストをしていた時のことだった。さっきまでは動いていた機能が正常に動かなくなり、エラーを返すようになってしまった。すぐさま原因が何か調べるためにログを確認すると、「xxx(とあるディレクトリのパス)へのアクセスが拒否されました」とある。該当のエラーを吐きだしているところはファイルをコピーする処理のところであった。

「はて、何が起きているのだろう?」

引数として渡しているパスの文字列に問題はない。しかし、何回やっても同じエラーを吐くことが分かったので、再現性のある問題であることが確定した。ファイルへのアクセスが拒否されているということから、ディレクトリの権限だったり、別のプロセスがディレクトリ内のファイルを掴んでいる可能性を調べてみたが、掴んでいる形跡はない。セキュリティソフトが掴んでいる?と疑って、セキュリティソフトを一時的に無効にしてみたが、結果は変わらず。

「むむむ…」

困ってしまってネットで調べてみるが、これだ!という解決策や原因は見つからず、その日は帰ることにした。

不具合を見つけた翌日。ふと、何気なくPCの空きディスク容量をみてみると118MBとでていた。

「残り空き容量118MBか…。118…。ん?」

118GBではない。118MBだ。単位が違う。空き容量が少なすぎる。もしかして、これが原因では?こんなに圧迫しているファイルは何か。調べていくとファイルをアーカイブする処理があるのだが、それをずっと放置し続けてきたため、ファイルサイズ実に100GBほど蓄積されてしまっていたのだった。その蓄積されたファイルを削除してディスクの空き容量を増やすと、問題なく動くようになった。

「なるほど。空き容量が無くなってファイルコピーできなかったということね。」

しかし、ファイルへのアクセスが拒否されたではなく、ディスクの空き容量が少なくて、コピーできなかったという風にエラーを吐いてくれればすぐ原因が分かったのになぁ。とボヤかずにはいられなかった。

今後「アクセスが拒否された」というエラーが出た場合は、アクセス権限やファイルパスの文字列の他に、ディスクの空き容量について確認する必要があるということを学んだ。

よろしければサポート頂けますと幸いです。