5 Replies Latest reply: Mar 4, 2014 10:40 AM by Stefan Truniger RSS

    Publisher load job blocked due to corrupt QVD - how to recover the job?

    Stefan Truniger

      Dear all,


      Last weekend we had a serious issue on the server as one of our central qvd files got corrupted.


      The effect of the corrupt file was that a load job, started via the publisher, basically just froze up and never ran into a timeout nor errored out in any way. The load job's log file simply stops at the reading operation of said file. The QVB process is frozen, system log doesn't show anything, the process just stays there doing nothing. Killing the process was only possible directly on the server via a process manager.


      The concerned file unfortunately is the central control mechanism for all our ERP downloads, so we had a bunch of subsequent loads doing exactly the same. This ended up in having all available instances of load processes locked and eventually the entire server got instable.


      Testing a load of the corrupt file via the Developer ends in a failed load and reload of the application, the same on the publisher leads to a frozen process.


      We are investigating how/why the file was corrupted to avoid that in future,

      however I am wondering about the locking behaviour:


      So my questions are:

      (1) Has anyone of you seen this locking behaviour with a corrupt qvd file?

      (2) Is there a way to get the QVB process to exit gracefully in such a case?


      Thanks for any hints or tips.




      - Single server environment, virtual, 6 Cores, 64bit, 32GB RAM

      - QV 11 SR 2

        • Re: Publisher load job blocked due to corrupt QVD - how to recover the job?

          Hi Stefan


          It will be hard to tell without looking at the contents of the QVD. QVD's start with XML meta-data, which you can actually open in QlikView (or notepad, if you are willing!)


          Are you able to open it this way?


          There is no try...catch operation in QV script (as far as I am aware ) but one check you could put in could be to load the QVD as an XML, check the columns in it and and then only load if the result is what you expect. If the XML header itself is also corrupted, then this is more likely to fail  the load script in a regular fashion if there is an issue (as there is not as much data in it as the "proper" data sits below.


          EG a process could be


          Load ExpectedField, 1 as expected from presavedlist.xls


          outer join (fields)

          load FieldName as ExpectedField,FieldName as LoadedField, 1 as Loaded from .... XXX.qvd (xmlsimple....)


          temp: load count(*)=0 as FieldCk from fields where expected = 1 and isnull(loaded);

          vLoadQVD = peek('fieldCk');


          if vloadQVD = -1 then


          load .... qvd


          end if


          Other things you could look at could be the error settings, by setting errormode = 0; will allow the script to ignore any errors. This is obviously risky but will complete the reload task, incase you have any other processes that sit on it.