Uploaded image for project: 'Traffic Server'
  1. Traffic Server
  2. TS-2471

records.config becomes empty when the disk full

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.2.0
    • Component/s: Manager
    • Labels:
      None

      Description

      we change the config parameters in cluster then the config file records.config becomes empty in race case when the system disk is full.

      in lib/records/RecLocal.cc and lib/records/RecProcess.cc:
      records.config maybe empty when the disk is full because we write records.config directly. we should write to a temp file, then rename it to records.config.
      one of the codes as:

              int nbytes;
              RecDebug(DL_Note, "Writing '%s'", g_rec_config_fpath);
              RecHandle h_file = RecFileOpenW(g_rec_config_fpath);
              RecFileWrite(h_file, tb->bufPtr(), tb->spaceUsed(), &nbytes);
              RecFileClose(h_file);
      

      in mgmt/Rollback.cc: we check the result of write, but do NOT check the return code of fsync and close.
      the codes as:

       466   // Write the buffer into the new configuration file
       467   writeBytes = write(diskFD, buf->bufPtr(), buf->spaceUsed());
       468   closeFile(diskFD);
       469   if (writeBytes != buf->spaceUsed()) {
       470     mgmt_log(stderr, "[Rollback::intrernalUpdate] Unable to write new version of %s : %s\n", fileName, strerror(errno));
       471     returnCode = SYS_CALL_ERROR_ROLLBACK;
       472     goto UPDATE_CLEANUP;
       473   }
      

      we should check the result of closeFile(diskFD)

        Attachments

          Activity

            People

            • Assignee:
              jamespeach James Peach
              Reporter:
              happy_fish100 Yu Qing
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: