void initDcacheConfig()

in aios/filesystem/fslib/tools/dcacheutil/DcacheUtilMain.cpp [458:572]


void initDcacheConfig(int &argc ,char** argv, DcacheConf &conf) {
    if (argc >= 4) {
        for (int i = 1; i < argc - 1;) {
            if (strcmp(argv[i], "--cmPath") == 0) 
            {
                conf.cmPath = string(argv[i + 1]);
                for (int j = i; j < argc - 2; ++j) {
                    argv[j] = argv[j + 2];
                }
                argc -= 2;
            } else if (strcmp(argv[i], "--md5") == 0) {
                conf.md5 = string(argv[i + 1]);
                for (int j = i; j < argc - 2; ++j) {
                    argv[j] = argv[j + 2];
                }
                argc -= 2;
            } else if (strcmp(argv[i], "--warmup") == 0) {
                string warmupStr = string(argv[i + 1]);
                autil::StringUtil::toLowerCase(warmupStr);
                if (warmupStr == "true") {
                    conf.warmup = true;
                } else {
                    conf.warmup = false;
                }
                for (int j = i; j < argc - 2; ++j) {
                    argv[j] = argv[j + 2];
                }
                argc -= 2;
            } else if (strcmp(argv[i], "--cluster") == 0) {
                conf.cluster = string(argv[i + 1]);
                for (int j = i; j < argc - 2; ++j) {
                    argv[j] = argv[j + 2];
                }
                argc -= 2;
            } else if (strcmp(argv[i], "--dcacheServer") == 0) {
                conf.dcacheServer = string(argv[i + 1]);
                for (int j = i; j < argc - 2; ++j) {
                    argv[j] = argv[j + 2];
                }
                argc -= 2;
            } else if (strcmp(argv[i], "--speedMB") == 0) {
                autil::StringUtil::fromString(argv[i + 1], conf.speed);
                for (int j = i; j < argc - 2; ++j) {
                    argv[j] = argv[j + 2];
                }
                argc -= 2;
            } else if (strcmp(argv[i], "--override") == 0) {
                string overrideStr = string(argv[i + 1]);
                autil::StringUtil::toLowerCase(overrideStr);
                if (overrideStr == "true") {
                    conf.bOverride = true;
                } else {
                    conf.bOverride = false;
                }
                for (int j = i; j < argc - 2; ++j) {
                    argv[j] = argv[j + 2];
                }
                argc -= 2;
            } else if (strcmp(argv[i], "--checkcache") == 0) {
                string overrideStr = string(argv[i + 1]);
                autil::StringUtil::toLowerCase(overrideStr);
                if (overrideStr == "true") {
                    conf.checkCache = true;
                } else {
                    conf.checkCache = false;
                }
                for (int j = i; j < argc - 2; ++j) {
                    argv[j] = argv[j + 2];
                }
                argc -= 2;
            } else {
                i += 1;
            }
        }
    }

    if (!conf.cmPath.empty()) {
        ::setenv("DCACHE_CM_SERVER_PATH", conf.cmPath.c_str(), 0);
    }
    if (!conf.dcacheServer.empty()) {
        ::setenv("DCACHE_SERVER", conf.dcacheServer.c_str(), 0);
    }
    if (!conf.cluster.empty()) {
        ::setenv("HIPPO_SERVICE_NAME", conf.cluster.c_str(), 1); //这个环境变量本身可能得考虑替换掉
    }
    if (conf.speed > 0) {
        stringstream speedStr;
        cout << "set speed to:" << conf.speed << endl; 
        speedStr << "quota_size_in_byte=" << conf.speed * 1024 * 1024;
        speedStr << ",quota_interval_in_ms=1000";
        ::setenv("FSLIB_READ_SPEED_LIMIT", speedStr.str().c_str(), 0);
    }
    if (conf.bOverride) {
        ::setenv(FSLIB_COPY_IS_OVERRIDE, "true", 0);
    }
    if (conf.checkCache) {
        ::setenv(FSLIB_META_CHECK_CACHE, "true", 0);
    }

    char* blockSizeEnv = ::getenv("FSLIB_COPY_BLOCK_SIZE");
    if (NULL == blockSizeEnv) {
        ::setenv("FSLIB_COPY_BLOCK_SIZE", "8388608", 0); //dcache 需要8M,业务通常不自己设置
    }
    
    if (NULL == ::getenv("HIPPO_SLAVE_IP")) { //统计需要
        string host;
        if(kmonitor::Util::GetHostIP(host)) {
            ::setenv("HIPPO_SLAVE_IP", host.c_str(), 0); 
        }
    }

    if (NULL == ::getenv("DCACHE_CONNECTION_TIMEOUT")) { //默认超时时间改小
        ::setenv("DCACHE_CONNECTION_TIMEOUT", "4000", 0); //4S,太小可能pangu都还没回数据
    }
}