Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem: Consistent Ingest failure with media/video transfer #966

Closed
ross-spencer opened this issue Mar 9, 2018 · 19 comments
Closed

Problem: Consistent Ingest failure with media/video transfer #966

ross-spencer opened this issue Mar 9, 2018 · 19 comments
Labels
Type: bug A flaw in the code that causes the software to produce an incorrect or unexpected result.
Milestone

Comments

@ross-spencer
Copy link
Contributor

ross-spencer commented Mar 9, 2018

This package of data here is causing Ingest to fail in Archivematica 1.7:

To recreate:

  • Untar the data and begin transfer
  • Transfer will complete but will hang on Normalize -> Validate Preservation Derivatives job

If we look at the MCP Server Log we see a large chunk of MediaConch output, followed by a SQL failure:

2[1]\\" formatid=\\"0xBF\\">0x434FD850</value>\\n        </test>\\n        <test outcome=\\"pass\\">\\n          <value name=\\"CRC-32\\" offset=\\"300\\" context=\\"/Segment[1]/Info[1]/CRC-32[1]\\" formatid=\\"0xBF\\">0xBAB0729C</value>\\n        </test>\\n        <test outcome=\\"pass\\">\\n          <value name=\\"CRC-32\\" offset=\\"387\\" context=\\"/Segment[1]/Tracks[1]/CRC-32[1]\\" formatid=\\"0xBF\\">0xAD6CDF0C</value>\\n        </test>\\n        <test outcome=\\"pass\\">\\n          <value name=\\"CRC-32\\" offset=\\"657\\" context=\\"/Segment[1]/Tags[1]/CRC-32[1]\\" formatid=\\"0xBF\\">0x634624A1</value>\\n        </test>\\n        <test outcome=\\"pass\\">\\n          <value name=\\"CRC-32\\" offset=\\"336713942\\" context=\\"/Segment[1]/Cues[1]/CRC-32[1]\\" formatid=\\"0xBF\\">0x96E4D111</value>\\n        </test>\\n      </check>\\n      <check icid=\\"EBML-CRC-VALID\\" version=\\"1\\" tests_run=\\"5\\" fail_count=\\"0\\" pass_count=\\"5\\">\\n        <test outcome=\\"pass\\">\\n          <value name=\\"CRC-32\\" offset=\\"65\\" context=\\"/Segment[1]/SeekHead[1]/CRC-32[1]\\" formatid=\\"0xBF\\">0x434FD850</value>\\n        </test>\\n        <test outcome=\\"pass\\">\\n          <value name=\\"CRC-32\\" offset=\\"300\\" context=\\"/Segment[1]/Info[1]/CRC-32[1]\\" formatid=\\"0xBF\\">0xBAB0729C</value>\\n        </test>\\n        <test outcome=\\"pass\\">\\n          <value name=\\"CRC-32\\" offset=\\"387\\" context=\\"/Segment[1]/Tracks[1]/CRC-32[1]\\" formatid=\\"0xBF\\">0xAD6CDF0C</value>\\n        </test>\\n        <test outcome=\\"pass\\">\\n          <value name=\\"CRC-32\\" offset=\\"657\\" context=\\"/Segment[1]/Tags[1]/CRC-32[1]\\" formatid=\\"0xBF\\">0x634624A1</value>\\n        </test>\\n        <test outcome=\\"pass\\">\\n          <value name=\\"CRC-32\\" offset=\\"336713942\\" context=\\"/Segment[1]/Cues[1]/CRC-32[1]\\" formatid=\\"0xBF\\">0x96E4D111</value>\\n        </test>\\n      </check>\\n      <check icid=\\"MKV-VALID-TRACKTYPE-VALUE\\" version=\\"1\\" tests_run=\\"2\\" fail_count=\\"0\\" pass_count=\\"2\\">\\n        <context name=\\"Valid Values\\">1 2 3 16 17 18 32</context>\\n        <test outcome=\\"pass\\">\\n          <value name=\\"TrackType\\" offset=\\"419\\" context=\\"/Segment[1]/Tracks[1]/TrackEntry[1]/TrackType[1]\\" formatid=\\"0x83\\">1</value>\\n          <value offset=\\"419\\" name=\\"TrackType\\">1</value>\\n        </test>\\n        <test outcome=\\"pass\\">\\n          <value name=\\"TrackType\\" offset=\\"616\\" context=\\"/Segment[1]/Tracks[1]/TrackEntry[2]/TrackType[1]\\" formatid=\\"0x83\\">2</value>\\n          <value offset=\\"616\\" name=\\"TrackType\\">2</value>\\n        </test>\\n      </check>\\n      <check icid=\\"MKV-VALID-BOOLEANS\\" version=\\"1\\" tests_run=\\"2\\" fail_count=\\"0\\" pass_count=\\"2\\">\\n        <context name=\\"Valid Values\\">0 1</context>\\n        <test outcome=\\"pass\\">\\n          <value name=\\"FlagLacing\\" offset=\\"409\\" context=\\"/Segment[1]/Tracks[1]/TrackEntry[1]/FlagLacing[1]\\" formatid=\\"0x9C\\">0</value>\\n          <value offset=\\"409\\" name=\\"FlagLacing\\">0</value>\\n        </test>\\n        <test outcome=\\"pass\\">\\n          <value name=\\"FlagLacing\\" offset=\\"591\\" context=\\"/Segment[1]/Tracks[1]/TrackEntry[2]/FlagLacing[1]\\" formatid=\\"0x9C\\">0</value>\\n          <value offset=\\"591\\" name=\\"FlagLacing\\">0</value>\\n        </test>\\n      </check>\\n    </implementationChecks>\\n    <implementationChecks checks_run=\\"0\\" fail_count=\\"0\\" pass_count=\\"0\\">\\n      <name>MediaConch FFV1 Implementation Checker</name>\\n    </implementationChecks>\\n    <implementationChecks checks_run=\\"1\\" fail_count=\\"0\\" pass_count=\\"1\\">\\n      <name>MediaConch PCM Implementation Checker</name>\\n      <check icid=\\"PCM-IS-CBR\\" version=\\"1\\" tests_run=\\"1\\" fail_count=\\"0\\" pass_count=\\"1\\">\\n        <context name=\\"Valid Values\\">CBR</context>\\n        <test outcome=\\"pass\\">\\n          <value offset=\\"\\" name=\\"\\">CBR</value>\\n        </test>\\n      </check>\\n    </implementationChecks>\\n  </media>\\n</MediaConch>\\n\\r\\n\\n", "eventOutcomeDetailNote": "MediaConch implementation check result: The implementation check MediaConch EBML Implementation Checker returned failure for the following check(s): EBML-ELEMENT-VALID-PARENT."}\n\n'}
archivematica-mcp-server_1       | ERROR     2018-03-09 03:06:01  archivematica.mcp.server:utils:wrapped:16:  Uncaught exception
archivematica-mcp-server_1       | Traceback (most recent call last):
archivematica-mcp-server_1       |   File "/src/MCPServer/lib/utils.py", line 14, in wrapped
archivematica-mcp-server_1       |     return fn(*args, **kwargs)
archivematica-mcp-server_1       |   File "/src/archivematicaCommon/lib/databaseFunctions.py", line 47, in wrapper
archivematica-mcp-server_1       |     return f(*args, **kwargs)
archivematica-mcp-server_1       |   File "/src/MCPServer/lib/taskStandard.py", line 91, in performTask
archivematica-mcp-server_1       |     self.check_request_status(completed_job_request)
archivematica-mcp-server_1       |   File "/src/MCPServer/lib/taskStandard.py", line 100, in check_request_status
archivematica-mcp-server_1       |     self.linkTaskManager.taskCompletedCallBackFunction(self)
archivematica-mcp-server_1       |   File "/src/MCPServer/lib/linkTaskManagerFiles.py", line 143, in taskCompletedCallBackFunction
archivematica-mcp-server_1       |     databaseFunctions.logTaskCompletedSQL(task)
archivematica-mcp-server_1       |   File "/src/archivematicaCommon/lib/databaseFunctions.py", line 263, in logTaskCompletedSQL
archivematica-mcp-server_1       |     task.save()
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 734, in save
archivematica-mcp-server_1       |     force_update=force_update, update_fields=update_fields)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 762, in save_base
archivematica-mcp-server_1       |     updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 827, in _save_table
archivematica-mcp-server_1       |     forced_update)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 877, in _do_update
archivematica-mcp-server_1       |     return filtered._update(values) > 0
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 580, in _update
archivematica-mcp-server_1       |     return query.get_compiler(self.db).execute_sql(CURSOR)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 1062, in execute_sql
archivematica-mcp-server_1       |     cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 840, in execute_sql
archivematica-mcp-server_1       |     cursor.execute(sql, params)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
archivematica-mcp-server_1       |     return self.cursor.execute(sql, params)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 98, in __exit__
archivematica-mcp-server_1       |     six.reraise(dj_exc_type, dj_exc_value, traceback)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
archivematica-mcp-server_1       |     return self.cursor.execute(sql, params)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 124, in execute
archivematica-mcp-server_1       |     return self.cursor.execute(query, args)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/MySQLdb/cursors.py", line 226, in execute
archivematica-mcp-server_1       |     self.errorhandler(self, exc, value)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
archivematica-mcp-server_1       |     raise errorvalue
archivematica-mcp-server_1       | OperationalError: (2006, 'MySQL server has gone away')
archivematica-mcp-server_1       | Exception in thread Thread-1105:
archivematica-mcp-server_1       | Traceback (most recent call last):
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/threading.py", line 801, in __bootstrap_inner
archivematica-mcp-server_1       |     self.run()
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/threading.py", line 754, in run
archivematica-mcp-server_1       |     self.__target(*self.__args, **self.__kwargs)
archivematica-mcp-server_1       |   File "/src/MCPServer/lib/utils.py", line 14, in wrapped
archivematica-mcp-server_1       |     return fn(*args, **kwargs)
archivematica-mcp-server_1       |   File "/src/archivematicaCommon/lib/databaseFunctions.py", line 47, in wrapper
archivematica-mcp-server_1       |     return f(*args, **kwargs)
archivematica-mcp-server_1       |   File "/src/MCPServer/lib/taskStandard.py", line 91, in performTask
archivematica-mcp-server_1       |     self.check_request_status(completed_job_request)
archivematica-mcp-server_1       |   File "/src/MCPServer/lib/taskStandard.py", line 100, in check_request_status
archivematica-mcp-server_1       |     self.linkTaskManager.taskCompletedCallBackFunction(self)
archivematica-mcp-server_1       |   File "/src/MCPServer/lib/linkTaskManagerFiles.py", line 143, in taskCompletedCallBackFunction
archivematica-mcp-server_1       |     databaseFunctions.logTaskCompletedSQL(task)
archivematica-mcp-server_1       |   File "/src/archivematicaCommon/lib/databaseFunctions.py", line 263, in logTaskCompletedSQL
archivematica-mcp-server_1       |     task.save()
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 734, in save
archivematica-mcp-server_1       |     force_update=force_update, update_fields=update_fields)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 762, in save_base
archivematica-mcp-server_1       |     updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 827, in _save_table
archivematica-mcp-server_1       |     forced_update)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 877, in _do_update
archivematica-mcp-server_1       |     return filtered._update(values) > 0
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 580, in _update
archivematica-mcp-server_1       |     return query.get_compiler(self.db).execute_sql(CURSOR)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 1062, in execute_sql
archivematica-mcp-server_1       |     cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 840, in execute_sql
archivematica-mcp-server_1       |     cursor.execute(sql, params)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
archivematica-mcp-server_1       |     return self.cursor.execute(sql, params)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 98, in __exit__
archivematica-mcp-server_1       |     six.reraise(dj_exc_type, dj_exc_value, traceback)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
archivematica-mcp-server_1       |     return self.cursor.execute(sql, params)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 124, in execute
archivematica-mcp-server_1       |     return self.cursor.execute(query, args)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/MySQLdb/cursors.py", line 226, in execute
archivematica-mcp-server_1       |     self.errorhandler(self, exc, value)
archivematica-mcp-server_1       |   File "/usr/local/lib/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
archivematica-mcp-server_1       |     raise errorvalue
archivematica-mcp-server_1       | OperationalError: (2006, 'MySQL server has gone away')

This has been seen with other transfer material, but wasn't measured and recreated under the same control circumstances as here.

Will investigate more as I get an opportunity.

@ross-spencer
Copy link
Contributor Author

Via @ablwr a possible change to the logging config could be -iv 4 this will only report failures/errors.

@ross-spencer ross-spencer added this to the 1.7.0 milestone Mar 12, 2018
@ross-spencer ross-spencer added the Type: bug A flaw in the code that causes the software to produce an incorrect or unexpected result. label Mar 12, 2018
@ross-spencer
Copy link
Contributor Author

@jrwdunham I managed to find time to take a look at this today. As much as anything, it was to inform myself of the mechanics of the script and mediaconch for when I talk to the client. (Plus I really wanted to know what special features I'd find in 7mb of logging!!!)

I took a couple of paths, but believe that I can confirm that this is a mediaconch error, not one of our own, and it has three parts:

  • The over-verbose output
  • The performance hit from whatever additional processing it is doing
  • An additional failure that doesn't appear in 17.x

To understand the mechanics of the FPR, I pulled the transcode script from the server and the validation script.

I ran the transcode script to see if the new .mkv would cause a similar failure during the Transfer. It did.

I then ran the validation script on the .mkv standalone and I discovered it worked and the log wasn't super long, so i added some logging to Archivematica and saw what you confirmed, that the output was 7mb. I then added that same log to the standalone script, and saw a huge difference, below:

16.12 (7423633 bytes)

{"eventOutcomeInformation": "fail", "stdout": "Length of stdout 7423633", "eventOutcomeDetailNote": "MediaConch implementation check result: The implementation check MediaConch EBML Implementation Checker returned failure for the following check(s): EBML-ELEMENT-VALID-PARENT."}

17.07 (144707 bytes)

{"eventOutcomeInformation": "pass", "stdout": "Length of stdout 144707", "eventOutcomeDetailNote": "MediaConch implementation check result: The implementation check MediaConch PCM Implementation Checker returned success for the following check(s): PCM-IS-CBR. The implementation check MediaConch EBML Implementation Checker returned success for the following check(s): EBML-ELEMENTS-WITHIN-MAXSIZELENGTH, MKV-ELEMENT-VALID-PARENT, EBML-MINVER-COHERANT, EBML-DOCVER-COH, EBML-ELEMENT-IN-SIZE-RANGE, EBML-CRC-FIRST, EBML-ELEMENT-NONMULTIPLES, EBML-ELEM-START, EBML-ELEMENT-VALID-RANGE, EBML-VALID-MAXID, EBML-HEADER-ELEMENTS-WITHIN-IDLENGTH-LIMIT, EBML-VALID-MAXSIZE, MKV-VALID-TRACKTYPE-VALUE, EBML-HEADER-ELEMENTS-WITHIN-MAXSIZELENGTH, EBML-CRC-VALID, MKV-SEEK-RESOLVE, EBML-ELEMENT-CONTAINS-MANDATES, EBML-ELEMENTS-WITHIN-MAXIDLENGTH, EBML-VER-COH."}

The slightly intended bonus of removing the additional logging from the return here, is that the job doesn't kill SQL server:
image
re: mediaconch I can't find an issue logged about this in their repository, so I suspect it has been fixed as part of another issue somewhere.

I don't have a solution as such, but I hope this helps with the conversation. Understanding this will help me chat to the client. Following your lead on the overall solution I think will still be best here.

There might also be a consideration about database limits. I did a shallow amount of digging for maximum insert length and thing that even though it's buggy, the 7mb should not have send Percona away on its travels.

I looked up this value SHOW VARIABLES LIKE 'max_allowed_packet'; which I think might control insert length. This is 16mb in our setup, and I wonder if there is another issue that might lie in that pipeline between the mcp-server and the db. IDK. One we can look at in the future maybe.

@ablwr
Copy link
Contributor

ablwr commented Mar 14, 2018

Yeah, the MC version in use for AM is a good bit behind what is current/stable and I beliiiiiieve there was a notable refactoring from our initial slow data-parsing with XSL and it's now done directly in the C++ code.

@ablwr
Copy link
Contributor

ablwr commented Mar 14, 2018

If you're already investing the time, it is probably worth doing a version bump for MediaConch to the latest, which is overall better and resolves plenty of other bugs (although that one bug we found a while back with the ambiguous SAR/Dar declaration is still in master but not latest stable release).

@JeromeMartinez
Copy link

it's now done directly in the C++ code

Not yet (no sponsor for speed improvement so no ETA for the moment)


As I understand, there is no more issues with test of MediaConch 17.07?

FYI, a new release is planned next week, including the SAR declaration issue and false positive with FFV1 having Golomb Rice coder.

@ablwr
Copy link
Contributor

ablwr commented Mar 14, 2018

Thanks Jerome! #goals

Even if not done in C++ it is a lot more stable than before, there were several notable changes between current release and what AM is on.

Archivematica 1.7 is also very imminent as I understand so that might have to wait until the next go-around.

@jrwdunham
Copy link
Contributor

My sense is that adding the iv 4 flag to the MC 16.12 version is going to solve our problem (still testing) and would be easier than updating MC. Correct me if I'm wrong.

@ablwr
Copy link
Contributor

ablwr commented Mar 14, 2018

If it's solved, that's the best option, yes!!!

@ross-spencer
Copy link
Contributor Author

@ablwr @jrwdunham I think we may still see a validation error with 16.12, EBML Implementation Checker returned failure for the following check(s): EBML-ELEMENT-VALID-PARENT. which doesn't appear in 17.07. This may swing the scales. But technically, it's probably also another ticket.

Also, both, I tried to upgrade the package (probably very naively) inside the Docker container for the MCP-Client - It seems there maybe dependencies that can't be resolved in Ubuntu 14.04. IDK, do you know if it would work, say, if we updated the Dockerfile first?

@ablwr
Copy link
Contributor

ablwr commented Mar 14, 2018

Without looking into it, I am pretty sure that is another issue similar to the FFV1 DAR_SAR failure -- an example of the specification itself changing, and MediaConch having to change validation policies to keep up with the development of the spec, hence not seeing it in 17.07.

@ablwr
Copy link
Contributor

ablwr commented Mar 14, 2018

But EBML, MKV, and FFV1 standardization are much much closer to completion/finalization, I don't think there are any significant chances in any of them (esp. EBML/MKV), and MediaConch is in alignment with that (as we have had to keep up/alongside for the past 3 years!). An update would be good at this juncture, my opinion. And a bump to the forthcoming MediaConch release from 17.07 (and all other future releases) will be a lot less major than the bump between 16.12 and 17.07.

@jrwdunham
Copy link
Contributor

@ablwr @ross-spencer I just ran a transfer through AM qa/1.x using as input a directory containing the lunchroom_manners_512kb.mp4 file in the archive that Ross links to in the original comment in this issue. Even when I change MediaConch 16.12 to use -iv 4 in the validate FPCommand I still get Archivematica hanging. I then did this manually by running mediaconch -mc -fx -iv 4 /path/to/mkv/file.mkv and the program hangs indefinitely.

@ablwr if you want to continue investigating this, I'm happy to let you run with it. I have other things I can work on.

I also have a PR that I'll post soon that changes the verbosity level to 4 because I think that's just a good idea, i.e., it fixes #807 and https://projects.artefactual.com/issues/11460.

If it ends up that we need to do work on changing which version of MediaConch is installed (e.g., via osdeps, ansible and/or docker), I can help with that if need be.

@ablwr
Copy link
Contributor

ablwr commented Mar 14, 2018

😎 Excellent! I'll give it a go although can't promise my machine is ready for (developer) primetime.

@ablwr
Copy link
Contributor

ablwr commented Mar 15, 2018

I also tried to (also probably very naively) update MediaConch within Docker to see what an upgrade would look like, but, like @ross-spencer, got some Ubuntu failures for building the -dashboard component. I don't think it's related to this bug but it is similar in nature. I haven't yet looked at mediainfolib and an order of operations issue.

Something else to consider in the existing mediaconch script is the use of the --Force flag, which will force a rewrite and not store pre-existing file data. This is for caching/optimization but for Archivematica I think it should rewrite every time. Not using --Force could allow errors to "linger" in the system.

Another +1 for upgrading is better UTF-8 encoding handling, like in this bug fix: https://github.com/MediaArea/MediaInfoLib/pull/756/files

I still advise upgrading to 17.12 (or if timing works out, 18.03 which will appear later this week).

My only apprehension is because I'm not yet able to test it out myself and see how an upgrade would fare for the system in general.

AFAIK (or maybe I should say as far as I remember) there was a breaking change a bit before 16.12 in how policies were delivered, but there haven't been any API changes since then, so upgrade should not be a problem. Anyway I think Archivematica uses the policies found within MediaConch and hasn't built custom policies on top, so it should not be a problem.

jrwdunham added a commit to artefactual-labs/archivematica-acceptance-tests that referenced this issue Mar 16, 2018
Note: the feature in mediaconch-verbosity.feature implicitly requires
a directory in archivematica-sampledata/ called mc-verbosity-test/ that
contains a single .mp4 file called lunchroom_manners_512kb.mp4 which,
when normalized to .mkv, will produce a file that makes MediaConch 16.12
but not 17.12 hang when performing an implementation check. The archive
containing this file can be found at
artefactual/archivematica#966. If possible,
the AM-sampledata repo should be modified to include mc-verbosity-test/.
jrwdunham added a commit to artefactual-labs/archivematica-acceptance-tests that referenced this issue Mar 20, 2018
Adds a feature that demonstrates that Archivematica with MediaConch v.
17.12 installed can correctly validate (and document the validation of) a .mkv
derivative that breaks MediaConch v. 16.12.

Note: this feature implicitly requires a directory in archivematica-sampledata/
called mc-challenging-file/ that contains a single .mp4 file called
lunchroom_manners_512kb.mp4 which, when normalized to .mkv, will produce a file
that makes MediaConch 16.12 but not 17.12 hang when performing an
implementation check. The archive containing this file can be found at
artefactual/archivematica#966.  If possible, the
AM-sampledata repo should be modified to include mc-challenging-file/.
jrwdunham added a commit to artefactual-labs/archivematica-acceptance-tests that referenced this issue Mar 20, 2018
Adds a feature that demonstrates that Archivematica with MediaConch v.
17.12 installed can correctly validate (and document the validation of) a .mkv
derivative that breaks MediaConch v. 16.12.

Note: this feature implicitly requires a directory in archivematica-sampledata/
called mc-challenging-file/ that contains a single .mp4 file called
lunchroom_manners_512kb.mp4 which, when normalized to .mkv, will produce a file
that makes MediaConch 16.12 but not 17.12 hang when performing an
implementation check. The archive containing this file can be found at
artefactual/archivematica#966.  If possible, the
AM-sampledata repo should be modified to include mc-challenging-file/.
@jrwdunham
Copy link
Contributor

jrwdunham commented Mar 20, 2018

To QA:

  • confirm that MediaConch v17.12 gets installed: mediaconch -v. IMPORTANT: this should be tested on an Ansible or package-based install as all of my tests were done on a Docker deploy.
  • create a transfer from a dir that contains the file lunchroom_manners_512kb.mp4 (which is in the archive linked to by Ross above) and confirm that when it gets normalized to .mkv that normalized file passes the "Validate preservation derivatives" step and does not hang.
  • Inspect the Task page of the "validate preservation derivatives" micro-service and confirm that the stdout does not display the MediaConch output twice (it used to); in general, the stdout/stderr of the validateFile.py client script (micro-service) should be less than what it was.

@jrwdunham jrwdunham removed their assignment Mar 20, 2018
@JeromeMartinez
Copy link

MediaConch v17.12

We just (yesterday) released v18.03, which contains bug fixes for FFV1 (false positive errors).
The API did not change so the move should not be long, I suggest to update to v18.03, or at least backport the FFV1 related fixes (in MediaInfoLib)

@sevein
Copy link
Member

sevein commented Mar 21, 2018

Thanks @JeromeMartinez, we've just filed #1006.

@sromkey
Copy link
Contributor

sromkey commented Mar 29, 2018

Working! Tested with an ansible install which runs MediaConch 18.03

@sromkey sromkey removed their assignment Mar 29, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: bug A flaw in the code that causes the software to produce an incorrect or unexpected result.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants