[
https://issues.apache.org/jira/browse/NIFI-3579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15928051#comment-15928051
]
ASF GitHub Bot commented on NIFI-3579:
--------------------------------------
Github user PuspenduBanerjee commented on a diff in the pull request:
https://github.com/apache/nifi/pull/1580#discussion_r106420146
--- Diff:
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java
---
@@ -392,8 +399,11 @@ public long getContainerUsableSpace(String
containerName) throws IOException {
if (path == null) {
throw new IllegalArgumentException("No container exists with
name " + containerName);
}
-
- return Files.getFileStore(path).getUsableSpace();
+ long usableSpace=path.toFile().getUsableSpace();
+ if(usableSpace==0) {
+ throw new RuntimeException("System returned usable space of
the partition for " + containerName + " is zero byte. Nifi can not create a
zero sized FileSystemRepository");
--- End diff --
Hi @markap14 Let me place share the thought process that I have. As per my
understanding usableSpace==0 means the system is already at in deep trouble or
nothing is getting stored at your flow file repo. So, anyway we have faced
write/flush error and either handled that or couldn't. Which signifies that
checking or not checking zero usable space at this stage does not make any
practical difference.
Secondly, for a 1GB usable storage the chance of hitting that Runtime
exception is *1 in 1073741824* i.e. *9.31322575e-8%* .
This comment is applicable for all 3 queries/concerns.
If you still think that we need to care about it, I am in.
> Nifi Failed to Start: nio Files.getFileStore(Path) is buggy in Windows
> ----------------------------------------------------------------------
>
> Key: NIFI-3579
> URL: https://issues.apache.org/jira/browse/NIFI-3579
> Project: Apache NiFi
> Issue Type: Bug
> Components: Core Framework
> Affects Versions: 1.2.0, 1.1.1
> Environment: Win 10 with Oracle JDK 1.8.0_121 on NTFS
> Reporter: Puspendu Banerjee
> Assignee: Puspendu Banerjee
> Priority: Critical
> Labels: windows
> Fix For: 1.2.0
>
> Attachments: nifi-app.log
>
>
> Nifi is failing to start due to IOException originating from
> FileSystemRepository during calls to {code:java}
> Files.getFileStore(path).getTotalSpace();
> Files.getFileStore(path).getUsableSpace();
> {code} with a read-access denied status.
> It looks like a buggy JDK implementation as on the other hand the following
> code is yielding result:
> {code:java}
> path.toFile().getTotalSpace();
> path.toFile().getUsableSpace();
> {code}
> Interestingly, the both of the codes are yielding same results for C:\ or
> System Drive.
> *sample*
> {code:java}
> import java.io.File;
> import java.io.IOException;
> import java.nio.file.Files;
> import java.nio.file.Path;
> import java.nio.file.Paths;
> import java.util.Arrays;
> import static java.lang.System.out;
> public class Blah {
> public static void main(String [] args) throws IOException{
> String [] _paths= {"D:\\workspace\\nifi", "c:\\Program Files"};
> final float divisor=1024 * 1024 * 1024f;
> for(String _path : _paths) {
> try {
> Path path = Paths.get(_path);
> out.println(path.toFile().getTotalSpace() /divisor + "GB");
> out.println(Files.getFileStore(path).getTotalSpace()/divisor
> +"GB");
> }catch (Exception ex){
> ex.printStackTrace();
> }
> }
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)