inspirehep / inspire-next

The INSPIRE repo.
https://inspirehep.net
GNU General Public License v3.0
59 stars 69 forks source link

holdingpen: validator stopped workflow without ERROR state #3200

Open ksachs opened 6 years ago

ksachs commented 6 years ago

Expected Behavior

If the validator fails the record should be in ERROR state

Current Behavior

"doc": "Check if the record is schema compliant and stop the workflow in ERROR state it it is not.", 
"doc": "Mark the workflow object with stopped-by-wf:907011.",
"doc": "Stop processing the given workflow. ....
"already-in-holding-pen": null, 
"approved": null, 
"auto-approved": null, 

but the record is marked as "Non-CORE", no ERROR state

Resulting problem

As a result following revised versions halt in the HP, since they are not in INSPIRE. Can you find all such records to add them to INSPIRE?

Example

https://labs.inspirehep.net/api/holdingpen/905044

Screenshots (if appropriate):

screenshot from 2018-02-21 13 33 49

david-caro commented 6 years ago

That workflow was stopped in error status before, but a new update came in from arXiv ("doc": "Mark the workflow object with stopped-by-wf:907011.",) and stopped it.

The update was manually declared as 'rejected' though:

{
    "doc": "Halt the workflow object, action=hep_approval, message=Submission halted for curator approval.",
    "name": "halt_record",
    "nicename": "\"Submission halted for curator approval.\"",
    "parameters": [],
    "time": "2018-02-21 04:16:58.561531"
},
{
    "doc": "IF_ELSE: args(<function is_record_accepted at 0x82cab90>, [<function add_core at 0x82cade8>, <function filter_keywords at 0x877acf8>, <function prepare_keywords at 0x877ade8>, <function remove_references at 0x877aed8>, <function set_refereed_and_fix_document_type at 0x82cdcf8>, <function fix_submission_number at 0x82cd6e0>, [<function IF_ELSE at 0x8bd3a28>, <function mark at 0x8bd39b0>, <function BREAK at 0x8bd3aa0>, <function store_record at 0x8766410>], [<function IF_ELSE at 0x8bd2aa0>, [<function mark at 0x8bd2938>], <function BREAK at 0x8bd2b18>, [<function send_robotupload at 0x8bd2a28>]], [<function IF_NOT at 0x8bd2c80>, <function wait_webcoll at 0x877ac08>], [<function IF at 0x8bd25f0>, <function reply_ticket at 0x8bd2578>], [<function IF at 0x8bd2758>, <function create_ticket at 0x8bd26e0>]], [[<function IF at 0x8bd20c8>, <function reply_ticket at 0x8bd2050>]]); kwargs().",
    "name": "IF_ELSE",
    "nicename": "IF_ELSE",
    "parameters": [],
    "time": "2018-02-21 13:50:33.690624"
},

At around 13:50

ksachs commented 6 years ago

the new one came in the next day and I rejected it. It can't have any effect on the first record with was not in ERROR state but not in INSPIRE either.

david-caro commented 6 years ago

The first error was in ERROR state :/

ksachs commented 6 years ago

it didn't show ERROR (to me)

david-caro commented 6 years ago

The error message was populated:

"_error_msg": "Traceback (most recent call ...

So, it got harvested (the 20th at ~4am):

{
"doc": "Make sure schema is set properly and resolve it.",
"name": "set_schema",
"nicename": "Make sure schema is set properly and resolve it.",
"parameters": [],
"time": "2018-02-20 04:29:54.998489"
},

it was manually accepted (the 20th at ~12pm):

{
"doc": "Halt the workflow object, action=hep_approval, message=Submission halted for curator approval.",
"name": "halt_record",
"nicename": "\"Submission halted for curator approval.\"",
"parameters": [],
"time": "2018-02-20 04:31:40.630595"
}, {
"doc": "IF_ELSE: args(<function is_record_accepted at 0x8ace7d0>, [<function add_core at 0x8acea28>, <function filter_keywords at 0x8f7d8c0>, <function prepare_keywords at 0x8f7d9b0>, <function set_refereed_and_fix_document_type at 0x8ad18c0>, <function fix_submission_number at 0x8ad12a8>, [<function IF_ELSE at 0x93d5500>, <function mark at 0x93d5488>, <function BREAK at 0x93d5578>, <function store_record at 0x8eeaf50>], [<function IF_ELSE at 0x93d3578>, [<function mark at 0x93d3410>], <function BREAK at 0x93d35f0>, [<function send_robotupload at 0x93d3500>]], [<function IF_NOT at 0x93d3758>, <function wait_webcoll at 0x8f7d7d0>], [<function IF at 0x93d30c8>, <function reply_ticket at 0x93d3050>], [<function IF at 0x93d3230>, <function create_ticket at 0x93d31b8>]], [[<function IF at 0x93d0b18>, <function reply_ticket at 0x93d0aa0>]]); kwargs().",
"name": "IF_ELSE",
"nicename": "IF_ELSE",
"parameters": [],
"time": "2018-02-20 12:55:51.277817"
},

and then it failed to send to legacy:

{
"doc": "Insert or replace a record.",
"name": "store_record",
"nicename": "Insert or replace a record.",
"parameters": [],
"time": "2018-02-20 12:55:52.379786"
},

so it got in error status (20th ~12pm). It was restarted then that day (20th ~9pm):

{
"doc": "Make sure schema is set properly and resolve it.",
"name": "set_schema",
"nicename": "Make sure schema is set properly and resolve it.",
"parameters": [],
"time": "2018-02-20 20:58:26.183956"
},

and got a validation error:

{
"doc": "Check if the record is schema compliant and stop the workflow in ERROR state it it is not.",
"name": "validate_record",
"nicename": "validate_record",
"parameters": [],
"time": "2018-02-20 20:58:27.599222"
},

Then the 21st at ~4am the new record update came in (https://labs.inspirehep.net/api/holdingpen/907011):

{
"doc": "Make sure schema is set properly and resolve it.",
"name": "set_schema",
"nicename": "Make sure schema is set properly and resolve it.",
"parameters": [],
"time": "2018-02-21 04:15:10.954549"
},

and took over: 907011:

{
"doc": "Mark the workflow object with stopped-matched-holdingpen-wf:True.",
"name": "mark",
"nicename": "Mark the workflow object with stopped-matched-holdingpen-wf:True.",
"parameters": [],
"time": "2018-02-21 04:15:12.292591"
},

905044:

{
"doc": "Mark the workflow object with stopped-by-wf:907011.",
"name": "mark",
"nicename": "Mark the workflow object with stopped-by-wf:907011.",
"parameters": [],
"time": "2018-02-21 04:15:11.600053"
},

Then the 21st at ~2pm it was rejected:

{
"doc": "Halt the workflow object, action=hep_approval, message=Submission halted for curator approval.",
"name": "halt_record",
"nicename": "\"Submission halted for curator approval.\"",
"parameters": [],
"time": "2018-02-21 04:16:58.561531"
}, {
"doc": "IF_ELSE: args(<function is_record_accepted at 0x82cab90>, [<function add_core at 0x82cade8>, <function filter_keywords at 0x877acf8>, <function prepare_keywords at 0x877ade8>, <function remove_references at 0x877aed8>, <function set_refereed_and_fix_document_type at 0x82cdcf8>, <function fix_submission_number at 0x82cd6e0>, [<function IF_ELSE at 0x8bd3a28>, <function mark at 0x8bd39b0>, <function BREAK at 0x8bd3aa0>, <function store_record at 0x8766410>], [<function IF_ELSE at 0x8bd2aa0>, [<function mark at 0x8bd2938>], <function BREAK at 0x8bd2b18>, [<function send_robotupload at 0x8bd2a28>]], [<function IF_NOT at 0x8bd2c80>, <function wait_webcoll at 0x877ac08>], [<function IF at 0x8bd25f0>, <function reply_ticket at 0x8bd2578>], [<function IF at 0x8bd2758>, <function create_ticket at 0x8bd26e0>]], [[<function IF at 0x8bd20c8>, <function reply_ticket at 0x8bd2050>]]); kwargs().",
"name": "IF_ELSE",
"nicename": "IF_ELSE",
"parameters": [],
"time": "2018-02-21 13:50:33.690624"
},

The handling of colliding harvests is something that is in progress, currently we are just keeping the new info and getting rid of the old, that will change, but for now it's the safest behavior that does not require a considerable effort to implement.

ksachs commented 6 years ago

I'm not sure I understand it. Does this mean if (both with same arXiv ID) https://labs.inspirehep.net/holdingpen/905044 is in approved but on error in the holdingpen and next day I reject https://labs.inspirehep.net/holdingpen/907011 this rejects also 905044???

I rejected the n-th copy for several articles assuming one record on error is enough.

david-caro commented 6 years ago

No, it means that when the second one comes in, the first one gets 'stopped'. Then accepting or rejecting the second one has no more effect on any other, but the first one will not be retaken after.

david-caro commented 6 years ago

Updates will not ask you to take a decision, so if you see a record that is halted, it's because it's a new one (any other copy in the workflow would have been stopped already).

ksachs commented 6 years ago

that's OK if the second inherits the decision of the first. I don't want to see that record again.

It also means we have lost several records I wanted to add because I was not aware of this behavior.

david-caro commented 6 years ago

Currently it does not, it's 'dummy', in the future it will do something smarter. The records are in the 'completed' list thingie, I can help you try to find them out if you need, they can be restarted and they will show up again as halted (or passed through if the record was added in the meantime).