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都还没回数据
}
}