{"record":{"id":"5f92fb1ea33b0720","repo":"apache/hadoop","slug":"not-invertible","errorCode":null,"errorMessage":"Not invertible","messagePattern":"Not invertible","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/erasurecode/rawcoder/util/GF256.java","lineNumber":228,"sourceCode":"    }\n\n    for (int i = 0; i < n; i++) {\n      outMatrix[i * n + i] = 1;\n    }\n\n    // Inverse\n    for (int j, i = 0; i < n; i++) {\n      // Check for 0 in pivot element\n      if (inMatrix[i * n + i] == 0) {\n        // Find a row with non-zero in current column and swap\n        for (j = i + 1; j < n; j++) {\n          if (inMatrix[j * n + i] != 0) {\n            break;\n          }\n        }\n        if (j == n) {\n          // Couldn't find means it's singular\n          throw new RuntimeException(\"Not invertible\");\n        }\n\n        for (int k = 0; k < n; k++) {\n          // Swap rows i,j\n          temp = inMatrix[i * n + k];\n          inMatrix[i * n + k] = inMatrix[j * n + k];\n          inMatrix[j * n + k] = temp;\n\n          temp = outMatrix[i * n + k];\n          outMatrix[i * n + k] = outMatrix[j * n + k];\n          outMatrix[j * n + k] = temp;\n        }\n      }\n\n      temp = gfInv(inMatrix[i * n + i]); // 1/pivot\n      for (j = 0; j < n; j++) {\n        // Scale row i by 1/pivot\n        inMatrix[i * n + j] = gfMul(inMatrix[i * n + j], temp);","sourceCodeStart":210,"sourceCodeEnd":246,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/erasurecode/rawcoder/util/GF256.java#L210-L246","documentation":"Error \"Not invertible\" thrown in apache/hadoop.","triggerScenarios":"Thrown at hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/erasurecode/rawcoder/util/GF256.java:228 when the library encounters an invalid state.","commonSituations":"Occurs when GF256 matrix inversion fails because the matrix is singular, typically from invalid erased index combinations. Validate erasedIndexes so the decode matrix is invertible.","solutions":["The generated coding matrix has no inverse; use the standard Vandermonde/Cauchy matrix generation provided by the coder instead of a custom matrix.","Verify numDataUnits and numParityUnits are valid for the RS coder."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}