Changeset 13776


Ignore:
Timestamp:
Oct 17, 2019 10:45:21 AM (5 weeks ago)
Author:
molsson
Message:

#5843 Added safeties to make sure external function executables are removed.

Location:
branches/dev-jk-2483/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/common/evaluation
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/dev-jk-2483/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/common/evaluation/ExternalFunctionExecutableGenerated.java

    r13721 r13776  
    1717    @Override
    1818    public void remove() {
    19         new File(executable).delete();
     19        File file = new File(executable);
     20        boolean success = file.delete();
     21        if (!success) {
     22            try {
     23                Thread.sleep(10);
     24            } catch (InterruptedException e) {
     25                // Ignore
     26            }
     27            success = file.delete();
     28        }
    2029    }
    2130}
  • branches/dev-jk-2483/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/common/evaluation/ExternalFunctionImpl.java

    r13721 r13776  
    4545            setup(ext, values, timeout, com);
    4646            evaluate(ext, values, timeout, com);
    47             return teardown(timeout, com);
     47            return com.teardown(timeout);
    4848        } finally {
    4949            if (com != null) {
     
    7979        com.accept("READY");
    8080        com.cancelTimer();
    81     }
    82 
    83     public int teardown(int timeout, ProcessCommunicator<V, T> com) throws IOException {
    84         com.startTimer(timeout);
    85         com.check("EXIT");
    86         com.accept("END");
    87         int result = com.end();
    88         com.cancelTimer();
    89         // log().debug("SUCCESS TEARDOWN");
    90         return result;
    9181    }
    9282
  • branches/dev-jk-2483/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/common/evaluation/LiveExternalFunction.java

    r13721 r13776  
    8989        if (com != null) {
    9090            livingCachedExternals.remove(this);
     91            try {
     92                com.teardown(100);
     93            } catch (IOException e) {
     94                // Do nothing?
     95            }
    9196            com.destroy();
    9297            com = null;
  • branches/dev-jk-2483/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/common/evaluation/ProcessCommunicator.java

    r12940 r13776  
    4949    private String getLine() throws IOException {
    5050        String line = buffLine;
    51         if (line == null)
     51        if (line == null) {
    5252            line = in.readLine();
     53        }
    5354        if (line == null) {
    5455            if (timeOutHappened) {
     
    110111            String format = deserializeString();
    111112            String value = deserializeString();
    112             if (warning != 0)
     113            if (warning != 0) {
    113114                mc.log().warning("%s: " + format, name, value);
    114             else
     115            } else {
    115116                mc.log().verbose("%s: " + format, name, value);
     117            }
    116118            line = getLine();
    117119        }
     
    133135            super(null, string);
    134136        }
     137    }
     138
     139    public int teardown(int timeout) throws IOException {
     140        startTimer(timeout);
     141        check("EXIT");
     142        accept("END");
     143        int result = end();
     144        cancelTimer();
     145        return result;
    135146    }
    136147
Note: See TracChangeset for help on using the changeset viewer.