func getSeqNum()

in internal/commandProcessor/commandProcessor.go [171:198]


func getSeqNum(ctx **log.Context, hEnv types.HandlerEnvironment, extensionName string) (int, error) {
	// Multiconfig support: Agent should set env variables for the extension name and sequence number
	seqNum := -1
	var err error = nil
	seqNumVariable := os.Getenv(constants.ConfigSequenceNumberEnvName)
	if seqNumVariable != "" {
		seqNum, err = strconv.Atoi(seqNumVariable)
		if err != nil {
			msg := fmt.Sprintf("failed to parse env variable ConfigSequenceNumber: %v", seqNumVariable)
			(*ctx).Log("message", msg, "error", err)
			return seqNum, errors.Wrap(err, msg)
		}
	}

	// Read the seqNum from latest config file in case VMAgent did not set it as env variable
	if seqNum == -1 {
		seqNum, err = seqnumutil.FindSequenceNumberFromConfig(hEnv.HandlerEnvironment.ConfigFolder, constants.ConfigFileExtension, extensionName)
		if err != nil {
			(*ctx).Log("FindSequenceNumberFromConfig", "failed to find sequence number from config folder.", "error", err)
		} else {
			(*ctx).Log("FindSequenceNumberFromConfig", fmt.Sprintf("Sequence number determined from config folder: %d", seqNum))
		}
	}

	(*ctx) = (*ctx).With("seq", seqNum)
	(*ctx).Log("seqNum", seqNum)
	return seqNum, nil
}