Uploaded image for project: 'NetarchiveSuite'
  1. NetarchiveSuite
  2. NAS-1828

IndexRequestServer does not keep track of ongoing index requests, hence is vulnerable to crashes.

    XMLWordPrintable

Details

    • Improvement
    • Resolution: Fixed
    • Major
    • 3.18.0, I49
    • 3.14.0, 3.15.0
    • Archive
    • None
    • BNF
    • Rough
    • Hide

      1. Start standard distributed NAS-system
      2. Ingest 100 domains into system.
      3. Make snapshotharvest SH1 (1 MBytes/pr/domain)
      4. Activate SH1 and await that it finished
      5. Make snapshotharvest SH2, depending on SH1 (3 MBytes/pr/domain)
      6. Log on to the server where the indexserver application is running, and prepare to kill the application (find the PID of the indexserver-application):
      6. Activate SH2 in the GUI
      7. When you see in the indexserver-log that the Indexserver has started working on the
      index, shut it down using kill -9 PID
      8. Start the indexserver again.
      9. See that the harvest SH2 starts and finishes.

      Show
      1. Start standard distributed NAS-system 2. Ingest 100 domains into system. 3. Make snapshotharvest SH1 (1 MBytes/pr/domain) 4. Activate SH1 and await that it finished 5. Make snapshotharvest SH2, depending on SH1 (3 MBytes/pr/domain) 6. Log on to the server where the indexserver application is running, and prepare to kill the application (find the PID of the indexserver-application): 6. Activate SH2 in the GUI 7. When you see in the indexserver-log that the Indexserver has started working on the index, shut it down using kill -9 PID 8. Start the indexserver again. 9. See that the harvest SH2 starts and finishes.

    Description

      When our production engineers ran robustness tests, they tried activating a few harvest definitions, let the jobs request a deduplication index, then killed and restarted the IndexServerApplication.

      The harvesters kept waiting for a reply to the index request (and won't stop before hitting their timeout) while the IndexServer had obviously forgotten of all previous requests.

      This is due to the fact that IndexRequestServer is implemented in a rather crude way, as it starts a thread for each request.

      We should make an implementation that keeps track of index requests based on the subset of jobs that is requested, and which would be able to restart processing these requests when restarting the application.

      Also harvesters should actively check for index generation completion instead of passively waiting for an answer. An even better solution would be not to submit a job before the relevant index has been generated, because it is a prerequisite to the job successful completion.

      Attachments

        Issue Links

          Activity

            People

              svc Søren Vejrup Carlsen (Inactive)
              ngiraud Nicolas Giraud (Inactive)
              Mikis Seth Sørensen Mikis Seth Sørensen (Inactive)
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - 70h
                  70h
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 25h Time Not Required
                  25h