Uploaded image for project: 'HPCC'
  1. HPCC
  2. HPCC-14376

Document ROXIE redundancy config options.

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: Later
    • Fix Version/s: 7.0.0
    • Component/s: Documentation
    • Labels:

      Description

      "Using Configuration Manager" states the options for ROXIE configuration - simple, overloaded, cyclic-redundancy, and full-redundancy however, does not document how they differ or what they are.

      e.g. their relation to the total number of channels to the option channelsPerNode in which the following code from roxie/ccd/ccdmain.cpp details

      // Generate the slave channels
              unsigned numDataCopies = topology->getPropInt("@numDataCopies", 1);
              if (!numDataCopies)
                  throw MakeStringException(MSGAUD_operator, ROXIE_INVALID_TOPOLOGY, "Invalid topology file - numDataCopies should be > 0");
              unsigned channelsPerNode = topology->getPropInt("@channelsPerNode", 1);
              unsigned numNodes = getNumNodes();
              const char *slaveConfig = topology->queryProp("@slaveConfig");
              if (!slaveConfig)
                  slaveConfig = "simple";
              if (strnicmp(slaveConfig, "cyclic", 6) == 0)
              {
                  numChannels = numNodes;
                  unsigned cyclicOffset = topology->getPropInt("@cyclicOffset", 1);
                  for (unsigned i=0; i<numNodes; i++)
                  {
                      // Note this code is a little confusing - easy to get the cyclic offset backwards
                      // cyclic offset means node n+offset has copy 2 for channel n, so node n has copy 2 for channel n-offset
                      int channel = (int)i+1;
                      for (unsigned copy=0; copy<numDataCopies; copy++)
                      {
                          if (channel < 1)
                              channel = channel + numNodes;
                          addChannel(i, channel, copy);
                          channel -= cyclicOffset;
                      }
                  }
              }
              else if (strnicmp(slaveConfig, "overloaded", 10) == 0)
              {
                  if (!channelsPerNode)
                      throw MakeStringException(MSGAUD_operator, ROXIE_INVALID_TOPOLOGY, "Invalid topology file - channelsPerNode should be > 0");
                  numChannels = numNodes * channelsPerNode;
                  for (unsigned i=0; i<numNodes; i++)
                  {
                      int channel = (int)(i+1);
                      for (unsigned copy=0; copy<channelsPerNode; copy++)
                      {
                          addChannel(i, channel, copy);
                          channel += numNodes;
                      }
                  }
              }
              else    // 'Full redundancy' or 'simple' mode
              {
                  if (numNodes % numDataCopies)
                      throw MakeStringException(MSGAUD_operator, ROXIE_INVALID_TOPOLOGY, "Invalid topology file - numChannels not an integer");
                  numChannels = numNodes / numDataCopies;
                  int channel = 1;
                  for (unsigned i=0; i<numNodes; i++)
                  {
                      addChannel(i, channel, 0);
                      channel++;
                      if ((unsigned)channel > numChannels)
                          channel = 1;
                  }
              }
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                g-pan Greg Panagiotatos
                Reporter:
                jamienoss Jamie Noss
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: