Search in sources :

Example 11 with Write

use of build.buildfarm.common.Write in project bazel-buildfarm by bazelbuild.

the class StubInstanceTest method outputStreamWrites.

@Test
public void outputStreamWrites() throws IOException, InterruptedException {
    AtomicReference<ByteString> writtenContent = new AtomicReference<>();
    serviceRegistry.addService(new ByteStreamImplBase() {

        ByteString content = ByteString.EMPTY;

        boolean finished = false;

        public void queryWriteStatus(QueryWriteStatusRequest request, StreamObserver<QueryWriteStatusResponse> responseObserver) {
            responseObserver.onNext(QueryWriteStatusResponse.newBuilder().setCommittedSize(content.size()).setComplete(finished).build());
            responseObserver.onCompleted();
        }

        @Override
        public StreamObserver<WriteRequest> write(StreamObserver<WriteResponse> responseObserver) {
            return new StreamObserver<WriteRequest>() {

                @Override
                public void onNext(WriteRequest request) {
                    checkState(!finished);
                    if (request.getData().size() != 0) {
                        checkState(request.getWriteOffset() == content.size());
                        content = content.concat(request.getData());
                    }
                    finished = request.getFinishWrite();
                    if (finished) {
                        writtenContent.set(content);
                        responseObserver.onNext(WriteResponse.newBuilder().setCommittedSize(content.size()).build());
                    }
                }

                @Override
                public void onError(Throwable t) {
                    t.printStackTrace();
                }

                @Override
                public void onCompleted() {
                    responseObserver.onCompleted();
                }
            };
        }
    });
    Instance instance = newStubInstance("outputStream-test");
    String resourceName = "output-stream-test";
    ByteString content = ByteString.copyFromUtf8("test-content");
    Write operationStreamWrite = instance.getOperationStreamWrite(resourceName);
    try (OutputStream out = operationStreamWrite.getOutput(1, SECONDS, () -> {
    })) {
        content.writeTo(out);
    }
    assertThat(writtenContent.get()).isEqualTo(content);
    instance.stop();
}
Also used : StreamObserver(io.grpc.stub.StreamObserver) ServerCallStreamObserver(io.grpc.stub.ServerCallStreamObserver) ClientCallStreamObserver(io.grpc.stub.ClientCallStreamObserver) Write(build.buildfarm.common.Write) Instance(build.buildfarm.instance.Instance) ByteString(com.google.protobuf.ByteString) WriteRequest(com.google.bytestream.ByteStreamProto.WriteRequest) ByteArrayOutputStream(java.io.ByteArrayOutputStream) OutputStream(java.io.OutputStream) ByteStreamImplBase(com.google.bytestream.ByteStreamGrpc.ByteStreamImplBase) WriteResponse(com.google.bytestream.ByteStreamProto.WriteResponse) AtomicReference(java.util.concurrent.atomic.AtomicReference) ByteString(com.google.protobuf.ByteString) QueryWriteStatusResponse(com.google.bytestream.ByteStreamProto.QueryWriteStatusResponse) QueryWriteStatusRequest(com.google.bytestream.ByteStreamProto.QueryWriteStatusRequest) Test(org.junit.Test)

Example 12 with Write

use of build.buildfarm.common.Write in project bazel-buildfarm by bazelbuild.

the class CASFileCache method newWrite.

Write newWrite(BlobWriteKey key, ListenableFuture<Long> future) {
    Write write = new Write() {

        CancellableOutputStream out = null;

        boolean isReset = false;

        SettableFuture<Void> closedFuture = null;

        long fileCommittedSize = -1;

        @Override
        public synchronized void reset() {
            try {
                if (out != null) {
                    out.cancel();
                }
            } catch (IOException e) {
                logger.log(Level.SEVERE, "could not reset write " + DigestUtil.toString(key.getDigest()) + ":" + key.getIdentifier(), e);
            } finally {
                isReset = true;
            }
        }

        @Override
        public synchronized long getCommittedSize() {
            long committedSize = getCommittedSizeFromOutOrDisk();
            if (committedSize == 0 && out == null) {
                isReset = true;
            }
            return committedSize;
        }

        long getCommittedSizeFromOutOrDisk() {
            if (isComplete()) {
                return key.getDigest().getSizeBytes();
            }
            return getCommittedSizeFromOut();
        }

        synchronized long getCommittedSizeFromOut() {
            if (out == null) {
                if (fileCommittedSize < 0) {
                    // we need to cache this from disk until an out stream is acquired
                    String blobKey = getKey(key.getDigest(), false);
                    Path blobKeyPath = getPath(blobKey);
                    try {
                        fileCommittedSize = Files.size(blobKeyPath.resolveSibling(blobKey + "." + key.getIdentifier()));
                    } catch (IOException e) {
                        fileCommittedSize = 0;
                    }
                }
                return fileCommittedSize;
            }
            return out.getWritten();
        }

        @Override
        public synchronized boolean isComplete() {
            return getFuture().isDone() || ((closedFuture == null || closedFuture.isDone()) && containsLocal(key.getDigest(), /* result=*/
            null, (key) -> {
            }));
        }

        @Override
        public synchronized ListenableFuture<FeedbackOutputStream> getOutputFuture(long deadlineAfter, TimeUnit deadlineAfterUnits, Runnable onReadyHandler) {
            if (closedFuture == null || closedFuture.isDone()) {
                try {
                    // this isn't great, and will block when there are multiple requesters
                    return immediateFuture(getOutput(deadlineAfter, deadlineAfterUnits, onReadyHandler));
                } catch (IOException e) {
                    return immediateFailedFuture(e);
                }
            }
            return transformAsync(closedFuture, result -> getOutputFuture(deadlineAfter, deadlineAfterUnits, onReadyHandler), directExecutor());
        }

        @Override
        public synchronized FeedbackOutputStream getOutput(long deadlineAfter, TimeUnit deadlineAfterUnits, Runnable onReadyHandler) throws IOException {
            // will block until it is returned via a close.
            if (closedFuture != null) {
                try {
                    closedFuture.get();
                } catch (ExecutionException e) {
                    throw new IOException(e.getCause());
                } catch (InterruptedException e) {
                    throw new IOException(e);
                }
            }
            SettableFuture<Void> outClosedFuture = SettableFuture.create();
            UniqueWriteOutputStream uniqueOut = createUniqueWriteOutput(out, key.getDigest(), UUID.fromString(key.getIdentifier()), () -> outClosedFuture.set(null), this::isComplete, isReset);
            commitOpenState(uniqueOut.delegate(), outClosedFuture);
            return uniqueOut;
        }

        private void commitOpenState(CancellableOutputStream out, SettableFuture<Void> closedFuture) {
            // transition the Write to an open state, and modify all internal state required
            // atomically
            // this function must. not. throw.
            this.out = out;
            this.closedFuture = closedFuture;
            // they will likely write to this, so we can no longer assume isReset.
            // might want to subscribe to a write event on the stream
            isReset = false;
            // our cached file committed size is now invalid
            fileCommittedSize = -1;
        }

        @Override
        public ListenableFuture<Long> getFuture() {
            return future;
        }
    };
    write.getFuture().addListener(write::reset, directExecutor());
    return write;
}
Also used : CompleteWrite(build.buildfarm.common.Write.CompleteWrite) Write(build.buildfarm.common.Write) SettableFuture(com.google.common.util.concurrent.SettableFuture) Path(java.nio.file.Path) LoadingCache(com.google.common.cache.LoadingCache) DirectoryNode(build.bazel.remote.execution.v2.DirectoryNode) Futures.successfulAsList(com.google.common.util.concurrent.Futures.successfulAsList) BooleanSupplier(java.util.function.BooleanSupplier) Duration(java.time.Duration) Map(java.util.Map) Utils.listDirentSorted(build.buildfarm.common.io.Utils.listDirentSorted) Path(java.nio.file.Path) ServerCallStreamObserver(io.grpc.stub.ServerCallStreamObserver) EvenMoreFiles.setReadOnlyPerms(build.buildfarm.common.io.EvenMoreFiles.setReadOnlyPerms) EntryLimitException(build.buildfarm.common.EntryLimitException) Set(java.util.Set) FilterOutputStream(java.io.FilterOutputStream) MILLISECONDS(java.util.concurrent.TimeUnit.MILLISECONDS) FileStatus(build.buildfarm.common.io.FileStatus) GuardedBy(javax.annotation.concurrent.GuardedBy) Executors(java.util.concurrent.Executors) MoreExecutors.directExecutor(com.google.common.util.concurrent.MoreExecutors.directExecutor) ClosedByInterruptException(java.nio.channels.ClosedByInterruptException) NamedFileKey(build.buildfarm.common.io.NamedFileKey) ByteStreams(com.google.common.io.ByteStreams) Directory(build.bazel.remote.execution.v2.Directory) Iterables(com.google.common.collect.Iterables) MoreExecutors.newDirectExecutorService(com.google.common.util.concurrent.MoreExecutors.newDirectExecutorService) MINUTES(java.util.concurrent.TimeUnit.MINUTES) Utils.getFileKey(build.buildfarm.common.io.Utils.getFileKey) Supplier(java.util.function.Supplier) DigestUtil(build.buildfarm.common.DigestUtil) Directories(build.buildfarm.common.io.Directories) FileNode(build.bazel.remote.execution.v2.FileNode) Nullable(javax.annotation.Nullable) Futures.immediateFuture(com.google.common.util.concurrent.Futures.immediateFuture) FileStore(java.nio.file.FileStore) Files(java.nio.file.Files) Executor(java.util.concurrent.Executor) ClosedChannelException(java.nio.channels.ClosedChannelException) Throwables(com.google.common.base.Throwables) IOException(java.io.IOException) Futures.whenAllComplete(com.google.common.util.concurrent.Futures.whenAllComplete) ExecutionException(java.util.concurrent.ExecutionException) Lock(java.util.concurrent.locks.Lock) CREATE(java.nio.file.StandardOpenOption.CREATE) Utils.listDir(build.buildfarm.common.io.Utils.listDir) HOURS(java.util.concurrent.TimeUnit.HOURS) RemovalListener(com.google.common.cache.RemovalListener) Futures.transform(com.google.common.util.concurrent.Futures.transform) NoSuchFileException(java.nio.file.NoSuchFileException) Futures.transformAsync(com.google.common.util.concurrent.Futures.transformAsync) RequestMetadata(build.bazel.remote.execution.v2.RequestMetadata) ContentAddressableStorage(build.buildfarm.cas.ContentAddressableStorage) SettableFuture(com.google.common.util.concurrent.SettableFuture) Digest(build.bazel.remote.execution.v2.Digest) Gauge(io.prometheus.client.Gauge) ImmutableSet(com.google.common.collect.ImmutableSet) ImmutableMap(com.google.common.collect.ImmutableMap) Directories.disableAllWriteAccess(build.buildfarm.common.io.Directories.disableAllWriteAccess) UUID(java.util.UUID) Instant(java.time.Instant) Logger(java.util.logging.Logger) String.format(java.lang.String.format) Preconditions.checkState(com.google.common.base.Preconditions.checkState) CacheLoader(com.google.common.cache.CacheLoader) ByteString(com.google.protobuf.ByteString) List(java.util.List) JSONObject(org.json.simple.JSONObject) SymlinkNode(build.bazel.remote.execution.v2.SymlinkNode) CacheBuilder(com.google.common.cache.CacheBuilder) BlobWriteKey(build.buildfarm.v1test.BlobWriteKey) ThreadFactoryBuilder(com.google.common.util.concurrent.ThreadFactoryBuilder) MoreExecutors.listeningDecorator(com.google.common.util.concurrent.MoreExecutors.listeningDecorator) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) Deadline(io.grpc.Deadline) CompleteWrite(build.buildfarm.common.Write.CompleteWrite) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Counter(io.prometheus.client.Counter) ConcurrentMap(java.util.concurrent.ConcurrentMap) Level(java.util.logging.Level) RejectedExecutionException(java.util.concurrent.RejectedExecutionException) APPEND(java.nio.file.StandardOpenOption.APPEND) ImmutableList(com.google.common.collect.ImmutableList) UncheckedExecutionException(com.google.common.util.concurrent.UncheckedExecutionException) FeedbackOutputStream(build.buildfarm.common.io.FeedbackOutputStream) ByteStreams.nullOutputStream(com.google.common.io.ByteStreams.nullOutputStream) ExecutorService(java.util.concurrent.ExecutorService) OutputStream(java.io.OutputStream) Response(build.bazel.remote.execution.v2.BatchReadBlobsResponse.Response) HashingOutputStream(com.google.common.hash.HashingOutputStream) EvenMoreFiles.isReadOnlyExecutable(build.buildfarm.common.io.EvenMoreFiles.isReadOnlyExecutable) Utils.stat(build.buildfarm.common.io.Utils.stat) Preconditions.checkNotNull(com.google.common.base.Preconditions.checkNotNull) FileAlreadyExistsException(java.nio.file.FileAlreadyExistsException) Maps(com.google.common.collect.Maps) Write(build.buildfarm.common.Write) Futures.catchingAsync(com.google.common.util.concurrent.Futures.catchingAsync) TimeUnit(java.util.concurrent.TimeUnit) Consumer(java.util.function.Consumer) Condition(java.util.concurrent.locks.Condition) DigestMismatchException(build.buildfarm.cas.DigestMismatchException) Futures.immediateFailedFuture(com.google.common.util.concurrent.Futures.immediateFailedFuture) Utils.getOrIOException(build.buildfarm.common.io.Utils.getOrIOException) VisibleForTesting(com.google.common.annotations.VisibleForTesting) Collections(java.util.Collections) SECONDS(java.util.concurrent.TimeUnit.SECONDS) InputStream(java.io.InputStream) IOException(java.io.IOException) Utils.getOrIOException(build.buildfarm.common.io.Utils.getOrIOException) ByteString(com.google.protobuf.ByteString) FeedbackOutputStream(build.buildfarm.common.io.FeedbackOutputStream) TimeUnit(java.util.concurrent.TimeUnit) ExecutionException(java.util.concurrent.ExecutionException) RejectedExecutionException(java.util.concurrent.RejectedExecutionException) UncheckedExecutionException(com.google.common.util.concurrent.UncheckedExecutionException)

Example 13 with Write

use of build.buildfarm.common.Write in project bazel-buildfarm by bazelbuild.

the class CASFileCache method newInputFallback.

// CAS fallback methods
private InputStream newInputFallback(Digest digest, long offset) throws IOException {
    checkNotNull(delegate);
    if (digest.getSizeBytes() > maxEntrySizeInBytes) {
        return delegate.newInput(digest, offset);
    }
    Write write = getWrite(digest, UUID.randomUUID(), RequestMetadata.getDefaultInstance());
    return newReadThroughInput(digest, offset, write);
}
Also used : CompleteWrite(build.buildfarm.common.Write.CompleteWrite) Write(build.buildfarm.common.Write)

Example 14 with Write

use of build.buildfarm.common.Write in project bazel-buildfarm by bazelbuild.

the class ByteStreamServiceTest method uploadsCanResetInLine.

@Test
public void uploadsCanResetInLine() throws Exception {
    ByteString content = ByteString.copyFromUtf8("Hello, World!");
    Digest digest = DIGEST_UTIL.compute(content);
    UUID uuid = UUID.randomUUID();
    SettableFuture<Long> writtenFuture = SettableFuture.create();
    ByteString.Output output = ByteString.newOutput((int) digest.getSizeBytes());
    FeedbackOutputStream out = new FeedbackOutputStream() {

        @Override
        public void close() {
            if (output.size() == digest.getSizeBytes()) {
                writtenFuture.set(digest.getSizeBytes());
            }
        }

        @Override
        public void flush() throws IOException {
            output.flush();
        }

        @Override
        public void write(byte[] b) throws IOException {
            output.write(b);
        }

        @Override
        public void write(byte[] b, int off, int len) throws IOException {
            output.write(b, off, len);
        }

        @Override
        public void write(int b) throws IOException {
            output.write(b);
        }

        @Override
        public boolean isReady() {
            return true;
        }
    };
    Write write = mock(Write.class);
    doAnswer((Answer<Void>) invocation -> {
        output.reset();
        return null;
    }).when(write).reset();
    when(write.getOutput(any(Long.class), any(TimeUnit.class), any(Runnable.class))).thenReturn(out);
    doAnswer(invocation -> (long) output.size()).when(write).getCommittedSize();
    when(write.getFuture()).thenReturn(writtenFuture);
    when(instance.getBlobWrite(digest, uuid, RequestMetadata.getDefaultInstance())).thenReturn(write);
    HashCode hash = HashCode.fromString(digest.getHash());
    String resourceName = ByteStreamUploader.uploadResourceName(/* instanceName=*/
    null, uuid, hash, digest.getSizeBytes());
    Channel channel = InProcessChannelBuilder.forName(fakeServerName).directExecutor().build();
    ByteStreamStub service = ByteStreamGrpc.newStub(channel);
    FutureWriteResponseObserver futureResponder = new FutureWriteResponseObserver();
    StreamObserver<WriteRequest> requestObserver = service.write(futureResponder);
    ByteString shortContent = content.substring(0, 6);
    requestObserver.onNext(WriteRequest.newBuilder().setWriteOffset(0).setResourceName(resourceName).setData(shortContent).build());
    requestObserver.onNext(WriteRequest.newBuilder().setWriteOffset(0).setData(content).setFinishWrite(true).build());
    assertThat(futureResponder.get()).isEqualTo(WriteResponse.newBuilder().setCommittedSize(content.size()).build());
    requestObserver.onCompleted();
    verify(write, atLeastOnce()).getCommittedSize();
    verify(write, atLeastOnce()).getOutput(any(Long.class), any(TimeUnit.class), any(Runnable.class));
    verify(write, times(1)).reset();
    verify(write, times(1)).getFuture();
}
Also used : Write(build.buildfarm.common.Write) SHA256(build.buildfarm.common.DigestUtil.HashFunction.SHA256) RequestMetadata(build.bazel.remote.execution.v2.RequestMetadata) SettableFuture(com.google.common.util.concurrent.SettableFuture) Channel(io.grpc.Channel) ByteStreamGrpc(com.google.bytestream.ByteStreamGrpc) MockitoAnnotations(org.mockito.MockitoAnnotations) StreamObserver(io.grpc.stub.StreamObserver) Digest(build.bazel.remote.execution.v2.Digest) Mockito.doAnswer(org.mockito.Mockito.doAnswer) ReadRequest(com.google.bytestream.ByteStreamProto.ReadRequest) After(org.junit.After) AdditionalAnswers.answerVoid(org.mockito.AdditionalAnswers.answerVoid) Status(io.grpc.Status) InProcessChannelBuilder(io.grpc.inprocess.InProcessChannelBuilder) ServerCallStreamObserver(io.grpc.stub.ServerCallStreamObserver) Mockito.atLeastOnce(org.mockito.Mockito.atLeastOnce) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) Instance(build.buildfarm.instance.Instance) ByteString(com.google.protobuf.ByteString) ByteStreamUploader(build.buildfarm.instance.stub.ByteStreamUploader) List(java.util.List) CHUNK_SIZE(build.buildfarm.server.ByteStreamService.CHUNK_SIZE) Mockito.any(org.mockito.Mockito.any) Mockito.eq(org.mockito.Mockito.eq) Mockito.mock(org.mockito.Mockito.mock) Mock(org.mockito.Mock) RunWith(org.junit.runner.RunWith) DigestUtil(build.buildfarm.common.DigestUtil) InProcessServerBuilder(io.grpc.inprocess.InProcessServerBuilder) Answer(org.mockito.stubbing.Answer) Lists(com.google.common.collect.Lists) ArgumentCaptor(org.mockito.ArgumentCaptor) ByteStreamStub(com.google.bytestream.ByteStreamGrpc.ByteStreamStub) FeedbackOutputStream(build.buildfarm.common.io.FeedbackOutputStream) ReadResponse(com.google.bytestream.ByteStreamProto.ReadResponse) Server(io.grpc.Server) Before(org.junit.Before) HashCode(com.google.common.hash.HashCode) Mockito.times(org.mockito.Mockito.times) IOException(java.io.IOException) Test(org.junit.Test) Mockito.when(org.mockito.Mockito.when) JUnit4(org.junit.runners.JUnit4) Truth.assertThat(com.google.common.truth.Truth.assertThat) Write(build.buildfarm.common.Write) Mockito.verify(org.mockito.Mockito.verify) WriteResponse(com.google.bytestream.ByteStreamProto.WriteResponse) TimeUnit(java.util.concurrent.TimeUnit) WriteRequest(com.google.bytestream.ByteStreamProto.WriteRequest) SECONDS(java.util.concurrent.TimeUnit.SECONDS) Digest(build.bazel.remote.execution.v2.Digest) ByteString(com.google.protobuf.ByteString) ByteStreamStub(com.google.bytestream.ByteStreamGrpc.ByteStreamStub) WriteRequest(com.google.bytestream.ByteStreamProto.WriteRequest) Channel(io.grpc.Channel) ByteString(com.google.protobuf.ByteString) FeedbackOutputStream(build.buildfarm.common.io.FeedbackOutputStream) HashCode(com.google.common.hash.HashCode) TimeUnit(java.util.concurrent.TimeUnit) UUID(java.util.UUID) AdditionalAnswers.answerVoid(org.mockito.AdditionalAnswers.answerVoid) Test(org.junit.Test)

Example 15 with Write

use of build.buildfarm.common.Write in project bazel-buildfarm by bazelbuild.

the class Worker method createFuseExecFileSystem.

private ExecFileSystem createFuseExecFileSystem(InputStreamFactory remoteInputStreamFactory, ContentAddressableStorage storage) {
    InputStreamFactory storageInputStreamFactory = (digest, offset) -> storage.get(digest).getData().substring((int) offset).newInput();
    InputStreamFactory localPopulatingInputStreamFactory = (blobDigest, offset) -> {
        // FIXME use write
        ByteString content = ByteString.readFrom(remoteInputStreamFactory.newInput(blobDigest, offset));
        if (offset == 0) {
            // extra computations
            Blob blob = new Blob(content, digestUtil);
            // here's hoping that our digest matches...
            storage.put(blob);
        }
        return content.newInput();
    };
    return new FuseExecFileSystem(root, new FuseCAS(root, new EmptyInputStreamFactory(new FailoverInputStreamFactory(storageInputStreamFactory, localPopulatingInputStreamFactory))), storage);
}
Also used : Arrays(java.util.Arrays) LoadingCache(com.google.common.cache.LoadingCache) Blob(build.buildfarm.cas.ContentAddressableStorage.Blob) ShardWorker(build.buildfarm.v1test.ShardWorker) MemoryCAS(build.buildfarm.cas.MemoryCAS) PutOperationStage(build.buildfarm.worker.PutOperationStage) Status(io.grpc.Status) IOSupplier(build.buildfarm.common.function.IOSupplier) Path(java.nio.file.Path) ReportResultStage(build.buildfarm.worker.ReportResultStage) Set(java.util.Set) MoreExecutors.directExecutor(com.google.common.util.concurrent.MoreExecutors.directExecutor) ByteStreams(com.google.common.io.ByteStreams) DigestUtil(build.buildfarm.common.DigestUtil) Strings(com.google.common.base.Strings) Code(io.grpc.Status.Code) UserPrincipal(java.nio.file.attribute.UserPrincipal) Lists(com.google.common.collect.Lists) ServerBuilder(io.grpc.ServerBuilder) Server(io.grpc.Server) Nullable(javax.annotation.Nullable) Backplane(build.buildfarm.backplane.Backplane) ContentAddressableStorageConfig(build.buildfarm.v1test.ContentAddressableStorageConfig) ExecuteActionStage(build.buildfarm.worker.ExecuteActionStage) ServingStatus(io.grpc.health.v1.HealthCheckResponse.ServingStatus) CASFileCache(build.buildfarm.cas.cfc.CASFileCache) Files(java.nio.file.Files) Executor(java.util.concurrent.Executor) PipelineStage(build.buildfarm.worker.PipelineStage) ShardWorkerOptions(build.buildfarm.common.config.ShardWorkerOptions) Throwables(com.google.common.base.Throwables) IOException(java.io.IOException) ContentAddressableStorages.createGrpcCAS(build.buildfarm.cas.ContentAddressableStorages.createGrpcCAS) AdminGrpc(build.buildfarm.v1test.AdminGrpc) InputStreamReader(java.io.InputStreamReader) File(java.io.File) ExecutionException(java.util.concurrent.ExecutionException) InputFetchStage(build.buildfarm.worker.InputFetchStage) Paths(java.nio.file.Paths) ManagedChannel(io.grpc.ManagedChannel) OptionsParser(com.google.devtools.common.options.OptionsParser) NegotiationType(io.grpc.netty.NegotiationType) RequestMetadata(build.bazel.remote.execution.v2.RequestMetadata) Random(java.util.Random) ContentAddressableStorage(build.buildfarm.cas.ContentAddressableStorage) WorkerStubs(build.buildfarm.instance.shard.WorkerStubs) InputStreamFactory(build.buildfarm.common.InputStreamFactory) SettableFuture(com.google.common.util.concurrent.SettableFuture) RemoteInputStreamFactory(build.buildfarm.instance.shard.RemoteInputStreamFactory) ConfigAdjuster(build.buildfarm.common.config.ConfigAdjuster) Digest(build.bazel.remote.execution.v2.Digest) Gauge(io.prometheus.client.Gauge) Utils.getUser(build.buildfarm.common.io.Utils.getUser) PrometheusPublisher(build.buildfarm.metrics.prometheus.PrometheusPublisher) TextFormat(com.google.protobuf.TextFormat) ByteStreamService(build.buildfarm.server.ByteStreamService) MatchStage(build.buildfarm.worker.MatchStage) Executors.newSingleThreadExecutor(java.util.concurrent.Executors.newSingleThreadExecutor) UUID(java.util.UUID) FileSystem(java.nio.file.FileSystem) Logger(java.util.logging.Logger) String.format(java.lang.String.format) Instance(build.buildfarm.instance.Instance) Preconditions.checkState(com.google.common.base.Preconditions.checkState) ByteString(com.google.protobuf.ByteString) List(java.util.List) HashFunction(build.buildfarm.common.DigestUtil.HashFunction) Size(build.buildfarm.common.Size) ReindexCasRequest(build.buildfarm.v1test.ReindexCasRequest) LoggingMain(build.buildfarm.common.LoggingMain) ContentAddressableStorageService(build.buildfarm.server.ContentAddressableStorageService) ThreadFactoryBuilder(com.google.common.util.concurrent.ThreadFactoryBuilder) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) DisableScaleInProtectionRequest(build.buildfarm.v1test.DisableScaleInProtectionRequest) INFO(java.util.logging.Level.INFO) ConfigurationException(javax.naming.ConfigurationException) Operation(com.google.longrunning.Operation) Counter(io.prometheus.client.Counter) SEVERE(java.util.logging.Level.SEVERE) Level(java.util.logging.Level) ImmutableList(com.google.common.collect.ImmutableList) DAYS(java.util.concurrent.TimeUnit.DAYS) FeedbackOutputStream(build.buildfarm.common.io.FeedbackOutputStream) FuseCAS(build.buildfarm.worker.FuseCAS) HealthStatusManager(io.grpc.services.HealthStatusManager) ExecutorService(java.util.concurrent.ExecutorService) OutputStream(java.io.OutputStream) DequeueMatchSettings(build.buildfarm.worker.DequeueMatchSettings) FilesystemCASConfig(build.buildfarm.v1test.FilesystemCASConfig) Iterator(java.util.Iterator) RedisShardBackplane(build.buildfarm.instance.shard.RedisShardBackplane) Executors.newFixedThreadPool(java.util.concurrent.Executors.newFixedThreadPool) Write(build.buildfarm.common.Write) NettyChannelBuilder(io.grpc.netty.NettyChannelBuilder) Pipeline(build.buildfarm.worker.Pipeline) ShardWorkerConfig(build.buildfarm.v1test.ShardWorkerConfig) Collections(java.util.Collections) SECONDS(java.util.concurrent.TimeUnit.SECONDS) InputStream(java.io.InputStream) Blob(build.buildfarm.cas.ContentAddressableStorage.Blob) ByteString(com.google.protobuf.ByteString) FuseCAS(build.buildfarm.worker.FuseCAS) InputStreamFactory(build.buildfarm.common.InputStreamFactory) RemoteInputStreamFactory(build.buildfarm.instance.shard.RemoteInputStreamFactory)

Aggregations

Write (build.buildfarm.common.Write)24 ByteString (com.google.protobuf.ByteString)18 Digest (build.bazel.remote.execution.v2.Digest)15 Test (org.junit.Test)15 OutputStream (java.io.OutputStream)13 FeedbackOutputStream (build.buildfarm.common.io.FeedbackOutputStream)12 NullWrite (build.buildfarm.common.Write.NullWrite)10 IOException (java.io.IOException)10 UUID (java.util.UUID)8 RequestMetadata (build.bazel.remote.execution.v2.RequestMetadata)6 ExecutionException (java.util.concurrent.ExecutionException)5 TimeUnit (java.util.concurrent.TimeUnit)5 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)5 CompleteWrite (build.buildfarm.common.Write.CompleteWrite)4 Instance (build.buildfarm.instance.Instance)4 WriteRequest (com.google.bytestream.ByteStreamProto.WriteRequest)4 ServerCallStreamObserver (io.grpc.stub.ServerCallStreamObserver)4 InputStream (java.io.InputStream)4 Blob (build.buildfarm.cas.ContentAddressableStorage.Blob)3 DigestUtil (build.buildfarm.common.DigestUtil)3