private void write( @NonNull ProfileRecordWriter profileRecordWriter, @NonNull GradleBuildProfileSpan.Builder currentRecord, @NonNull String projectPath, @Nullable String variant) { // pop this record from the stack. if (recordStacks.get().pop() != currentRecord.getId()) { Logger.getLogger(ThreadRecorder.class.getName()) .log(Level.SEVERE, "Profiler stack corrupted"); } currentRecord.setDurationInMs( System.currentTimeMillis() - currentRecord.getStartTimeInMs()); profileRecordWriter.writeRecord(projectPath, variant, currentRecord); } }
private GradleBuildProfileSpan.Builder create( @NonNull ProfileRecordWriter profileRecordWriter, @NonNull ExecutionType executionType, @Nullable GradleTransformExecution transform) { long thisRecordId = profileRecordWriter.allocateRecordId(); // am I a child ? @Nullable Long parentId = recordStacks.get().peek(); long startTimeInMs = System.currentTimeMillis(); final GradleBuildProfileSpan.Builder currentRecord = GradleBuildProfileSpan.newBuilder() .setId(thisRecordId) .setType(executionType) .setStartTimeInMs(startTimeInMs); if (transform != null) { currentRecord.setTransform(transform); } if (parentId != null) { currentRecord.setParentId(parentId); } currentRecord.setThreadId(threadId.get()); recordStacks.get().push(thisRecordId); return currentRecord; }
@Override public void afterExecute(@NonNull Task task, @NonNull TaskState taskState) { GradleBuildProfileSpan.Builder record = taskRecords.remove(task.getPath()); record.setDurationInMs(System.currentTimeMillis() - record.getStartTimeInMs()); //noinspection ThrowableResultOfMethodCallIgnored Just logging the failure. record.setTask( GradleTaskExecution.newBuilder() .setType(AnalyticsUtil.getTaskExecutionType(task.getClass())) .setDidWork(taskState.getDidWork()) .setSkipped(taskState.getSkipped()) .setUpToDate(taskState.getUpToDate()) .setFailed(taskState.getFailure() != null)); recordWriter.writeRecord(task.getProject().getPath(), getVariantName(task), record); ProcessProfileWriter.recordMemorySample(); }
/** Append a span record to the build profile. Thread safe. */ @Override public void writeRecord( @NonNull String project, @Nullable String variant, @NonNull final GradleBuildProfileSpan.Builder executionRecord) { executionRecord.setProject(mNameAnonymizer.anonymizeProjectPath(project)); executionRecord.setVariant(mNameAnonymizer.anonymizeVariant(project, variant)); spans.add(executionRecord.build()); }
@Override public void beforeExecute(@NonNull Task task) { GradleBuildProfileSpan.Builder builder = GradleBuildProfileSpan.newBuilder(); builder.setType(ExecutionType.TASK_EXECUTION); builder.setId(recordWriter.allocateRecordId()); builder.setStartTimeInMs(System.currentTimeMillis()); taskRecords.put(task.getPath(), builder); }