Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ private static final class RepoIndexingFileVisitor implements FileVisitor<Path>
private final RepoIndexingStats indexingStats;
private final Path repoRoot;
private final AtomicInteger sourceRootCounter;
private final boolean followSymlinks;

private RepoIndexingFileVisitor(
Config config,
Expand All @@ -120,16 +121,23 @@ private RepoIndexingFileVisitor(
packageTree = new PackageTree(config);
indexingStats = new RepoIndexingStats();
sourceRootCounter = new AtomicInteger();
followSymlinks = config.isCiVisibilityRepoIndexFollowSymlinks();
}

@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
if (Files.isSymbolicLink(dir) && readSymbolicLink(dir).startsWith(repoRoot)) {
// The path is a symlink that points inside the repo.
// We'll visit the folder that it points to anyway,
// moreover, we don't want two different results for one file
// (one containing the symlink, the other - the actual folder).
return FileVisitResult.SKIP_SUBTREE;
if (Files.isSymbolicLink(dir)) {
if (!followSymlinks) {
// Configured to skip symlinks
return FileVisitResult.SKIP_SUBTREE;
}
if (readSymbolicLink(dir).startsWith(repoRoot)) {
// The path is a symlink that points inside the repo.
// We'll visit the folder that it points to anyway,
// moreover, we don't want two different results for one file
// (one containing the symlink, the other - the actual folder).
return FileVisitResult.SKIP_SUBTREE;
}
}
return FileVisitResult.CONTINUE;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ public final class CiVisibilityConfig {
"civisibility.ciprovider.integration.enabled";
public static final String CIVISIBILITY_REPO_INDEX_DUPLICATE_KEY_CHECK_ENABLED =
"civisibility.repo.index.duplicate.key.check.enabled";
public static final String CIVISIBILITY_REPO_INDEX_FOLLOW_SYMLINKS =
"civisibility.repo.index.follow.symlinks";
public static final String CIVISIBILITY_EXECUTION_SETTINGS_CACHE_SIZE =
"civisibility.execution.settings.cache.size";
public static final String CIVISIBILITY_JVM_INFO_CACHE_SIZE = "civisibility.jvm.info.cache.size";
Expand Down
8 changes: 8 additions & 0 deletions internal-api/src/main/java/datadog/trace/api/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,7 @@
import static datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_REMOTE_ENV_VARS_PROVIDER_KEY;
import static datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_REMOTE_ENV_VARS_PROVIDER_URL;
import static datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_REPO_INDEX_DUPLICATE_KEY_CHECK_ENABLED;
import static datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_REPO_INDEX_FOLLOW_SYMLINKS;
import static datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_RESOURCE_FOLDER_NAMES;
import static datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS;
import static datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_SCALATEST_FORK_MONITOR_ENABLED;
Expand Down Expand Up @@ -1001,6 +1002,7 @@ public static String getHostName() {
private final boolean ciVisibilityTestSkippingEnabled;
private final boolean ciVisibilityCiProviderIntegrationEnabled;
private final boolean ciVisibilityRepoIndexDuplicateKeyCheckEnabled;
private final boolean ciVisibilityRepoIndexFollowSymlinks;
private final int ciVisibilityExecutionSettingsCacheSize;
private final int ciVisibilityJvmInfoCacheSize;
private final int ciVisibilityCoverageRootPackagesLimit;
Expand Down Expand Up @@ -2261,6 +2263,8 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
configProvider.getBoolean(CIVISIBILITY_CIPROVIDER_INTEGRATION_ENABLED, true);
ciVisibilityRepoIndexDuplicateKeyCheckEnabled =
configProvider.getBoolean(CIVISIBILITY_REPO_INDEX_DUPLICATE_KEY_CHECK_ENABLED, true);
ciVisibilityRepoIndexFollowSymlinks =
configProvider.getBoolean(CIVISIBILITY_REPO_INDEX_FOLLOW_SYMLINKS, false);
ciVisibilityExecutionSettingsCacheSize =
configProvider.getInteger(CIVISIBILITY_EXECUTION_SETTINGS_CACHE_SIZE, 16);
ciVisibilityJvmInfoCacheSize = configProvider.getInteger(CIVISIBILITY_JVM_INFO_CACHE_SIZE, 8);
Expand Down Expand Up @@ -3822,6 +3826,10 @@ public boolean isCiVisibilityRepoIndexDuplicateKeyCheckEnabled() {
return ciVisibilityRepoIndexDuplicateKeyCheckEnabled;
}

public boolean isCiVisibilityRepoIndexFollowSymlinks() {
return ciVisibilityRepoIndexFollowSymlinks;
}

public int getCiVisibilityExecutionSettingsCacheSize() {
return ciVisibilityExecutionSettingsCacheSize;
}
Expand Down
Loading