From: Pawel Wasowski Date: Wed, 17 Mar 2021 17:26:29 +0000 (+0100) Subject: [ML][Pipeline] Remove InvalidValuesError from createPipeline X-Git-Tag: submit/tizen/20210319.060422~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=358c36403c8027e23d4e260d01b7d8cf4b5ef4f8;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [ML][Pipeline] Remove InvalidValuesError from createPipeline ACR: TWDAPI-274 This commit removes InvalidValuesError from the list of valid tizen.ml.pipeline.createPipeline() exceptions, because we cannot reliably detect, when a pipeline description is invalid. Instead, AbortError with custom message, suggesting that the description may be invalid, will be used. [Verification] Tested in Chrome DevTools with the snippets below, works fine // Invalid pipeline definition var pipeline_def = "invalid"; var pipeline = tizen.ml.pipeline.createPipeline(pipeline_def, state => {console.log(state);}) // WebAPIException {name: "AbortError", message: "Could not create pipeline: // invalid pipeline description or an internal error"} ////////////////////////////////////////////////////////////////////// // Valid pipeline definition var inputTI = new tizen.ml.TensorsInfo(); inputTI.addTensorInfo('ti1', 'UINT8', [4, 20, 15, 1]); var outputTI = new tizen.ml.TensorsInfo(); outputTI.addTensorInfo('ti1', 'UINT8', [1200]); var flattenAndSet123 = function(input, output) { console.log("Custom filter called"); // dispose should have no efect input.dispose(); console.log('input count: ' + input.tensorsInfo.count); // dispose should have no efect input.dispose(); console.log('output count: ' + output.tensorsInfo.count); var rawOutputData = new Uint8Array(1200); for (var i = 0; i < rawOutputData.length; ++i) { rawOutputData[i] = 123; } output.setTensorRawData(0, rawOutputData); // this call should have no effect input.setTensorRawData(0, rawOutputData); return 0; } tizen.ml.pipeline.registerCustomFilter('testfilter2', flattenAndSet123, inputTI, outputTI, function errorCallback(error) { console.warn('custom filter error:') ; console.warn(error); }); var pipeline_def = "videotestsrc num-buffers=3 " + "! video/x-raw,width=20,height=15,format=BGRA " + "! tensor_converter " + "! tensor_filter framework=custom-easy model=testfilter2 " + "! appsink name=mysink"; var pipeline = tizen.ml.pipeline.createPipeline(pipeline_def, state => {console.log(state);}) pipeline.registerSinkListener('mysink', function(sinkName, data) { console.log('SinkListener for "' + sinkName + '" sink called'); console.log(data); }) // pipeline starts properly Change-Id: If8d08160cb98b3acc34812f47b2741c2cce83cd8 Signed-off-by: Pawel Wasowski --- diff --git a/src/ml/js/ml_pipeline.js b/src/ml/js/ml_pipeline.js index b7204bf4..f25550bd 100755 --- a/src/ml/js/ml_pipeline.js +++ b/src/ml/js/ml_pipeline.js @@ -27,7 +27,6 @@ function NextPipelineId() { } var ValidPipelineManagerCreatePipelineExceptions = [ - 'InvalidValuesError', 'TypeMismatchError', 'NotSupportedError', 'SecurityError', diff --git a/src/ml/ml_pipeline.cc b/src/ml/ml_pipeline.cc index 0719a2d9..02aa3c01 100644 --- a/src/ml/ml_pipeline.cc +++ b/src/ml/ml_pipeline.cc @@ -103,6 +103,11 @@ PlatformResult Pipeline::CreatePipeline(int id, const std::string& definition, if (ML_ERROR_NONE != ret) { LoggerE("ml_pipeline_construct() failed: [%d] (%s)", ret, get_error_message(ret)); + if (ML_ERROR_STREAMS_PIPE == ret) { + return PlatformResult{ + ErrorCode::ABORT_ERR, + "Could not create pipeline: invalid pipeline description or an internal error"}; + } return util::ToPlatformResult(ret, "Could not create a pipeline"); } LoggerD("ml_pipeline_construct() succeeded");