Changed-lines coverage: PR changed C/C++ lines covered by tests: 67.80% (40/59) Uncovered changed code (with context): ================================================================================ src/Disks/DiskObjectStorage/ObjectStorages/HDFS/HDFSObjectStorage.cpp ================================================================================ --- uncovered block 64-64 --- 62 | void HDFSObjectStorage::initializeHDFSFS() const 63 | { >> 64 | if (initialized) 65 | return; 66 | --- uncovered block 243-258 --- 241 | std::optional HDFSObjectStorage::tryGetObjectMetadata(const std::string & path, bool) const 242 | { >> 243 | initializeHDFSFS(); >> 244 | HDFSFileInfo file_info; >> 245 | file_info.file_info = wrapErr(hdfsGetPathInfo, hdfs_fs.get(), path.data()); >> 246 | if (!file_info.file_info) 247 | { >> 248 | if (errno == ENOENT) >> 249 | return {}; 250 | >> 251 | throw Exception(ErrorCodes::HDFS_ERROR, >> 252 | "Cannot get file info for: {}. Error: {}", path, hdfsGetLastError()); 253 | } 254 | /// Tells `~HDFSFileInfo` how many records to free; the default 0 would free the array 255 | /// but leak the inner `mName` / `mOwner` / `mGroup` strings of this single record. >> 256 | file_info.length = 1; 257 | >> 258 | return makeObjectMetadata(file_info.file_info->mLastMod, file_info.file_info->mSize); 259 | } 260 | --- uncovered block 297-302 --- 295 | else 296 | { >> 297 | children.emplace_back(std::make_shared( >> 298 | String(file_path), >> 299 | makeObjectMetadata(ls.file_info[i].mLastMod, ls.file_info[i].mSize))); 300 | } 301 | >> 302 | if (max_keys && children.size() >= max_keys) 303 | break; 304 | } ================================================================================ src/Storages/ObjectStorage/StorageObjectStorageSource.cpp ================================================================================ --- uncovered block 1305-1311 --- 1303 | /// validation (it carries no tags, so the with_tags=false HEAD drops nothing). A real fetch that 1304 | /// merely lacks an ETag (e.g. GCS) has is_fetched=true and is left as-is - no extra HEAD. >> 1305 | object_info.metadata = object_storage->getObjectMetadata(object_info, /*with_tags=*/ false); 1306 | } 1307 | 1308 | if (use_page_cache && !object_info.metadata->isEtagUsableAsCacheKey()) 1309 | { >> 1310 | LOG_WARNING(log, "Cannot use page cache, etag is missing or not a strong content identifier"); >> 1311 | use_page_cache = false; 1312 | } 1313 | --- uncovered block 1386-1386 --- 1384 | if (!object_info.metadata->isEtagUsableAsCacheKey()) 1385 | { >> 1386 | LOG_WARNING(log, "Cannot use filesystem cache, etag is missing or not a strong content identifier"); 1387 | } 1388 | else WARNING: Failed to get start time for [Print Uncovered Code] - start time and duration won't be set --- Coverage counts --- Lines : baseline 882,938/1,029,049 -> current 883,317/1,029,079 (delta +379 / +30) Functions : baseline 947,438/1,022,329 -> current 947,549/1,022,343 (delta +111 / +14) Branches : baseline 285,129/365,742 -> current 285,252/365,764 (delta +123 / +22)