Skip to content

BulkMutation failure: MutateRowsException: Some mutations failed to apply #2255

@santy6781

Description

@santy6781

I am working on bigtable java api

<groupId>com.google.cloud.bigtable</groupId>

<artifactId>bigtable-client-core</artifactId>

<version>1.12.0</version>

And was trying to use BulkMutation for writing into bigtable and was trying to set my own timestamp to set in the Mutation cell but getting 'Some mutations failed to apply'.
This is happening with all the version of "bulkMutate" functions.
I tried this on Bigtable-Emulator.

Below is my sample code:
public void writeToTableInBulk11() {

	try {

		System.out.println("\nWriting some greetings to the table");

		String[] greetings = { "Hello World!", "Hello Bigtable!", "Hello Java!" };



		BulkMutation batch = BulkMutation.create(tableId);

		for (int i = 0; i < greetings.length; i++) {

			//Working

			batch.add(ROW_KEY_PREFIX + i, Mutation.create().setCell(COLUMN_FAMILY, COLUMN_QUALIFIER, greetings[i]));

			//Not working

			batch.add(ROW_KEY_PREFIX + i, Mutation.create().setCell(COLUMN_FAMILY, COLUMN_QUALIFIER, System.currentTimeMillis(), greetings[i]));

		}

		//Tried both

// dataClient.bulkMutateRows(batch);

		dataClient.bulkMutationCallable().call(batch);



	} catch (NotFoundException e) {

		System.err.println("Failed to write to non-existent table: " + e.getMessage());

	}

}



public void writeToTableInBulk1() {

	try {

		System.out.println("\nWriting some greetings to the table");

		String[] greetings = { "Hello World!", "Hello Bigtable!", "Hello Java!" };



		BulkMutation batch = BulkMutation.create(tableId);

		for (int i = 0; i < greetings.length; i++) {

			//Not working

			batch.add(ROW_KEY_PREFIX + i, Mutation.create().setCell(COLUMN_FAMILY, COLUMN_QUALIFIER, System.currentTimeMillis(), greetings[i]));

			//Works

// batch.add(ROW_KEY_PREFIX + i, Mutation.create().setCell(COLUMN_FAMILY, COLUMN_QUALIFIER, greetings[i]));

		}

		ApiFuture<Void> resultFuture = dataClient.bulkMutateRowsAsync(batch);



		ApiFutures.addCallback(resultFuture, new ApiFutureCallback<Void>() {

			public void onFailure(Throwable t) {

				if (t instanceof BulkMutationFailure) {

					System.out.println("Some entries failed to apply");

				} else {

					t.printStackTrace();

				}

			}



			public void onSuccess(Void ignored) {

				System.out.println("Successfully applied all mutation");

			}

		}, MoreExecutors.directExecutor());



	} catch (NotFoundException e) {

		System.err.println("Failed to write to non-existent table: " + e.getMessage());

	}

}

Exception trace is below

Exception in thread "main" com.google.cloud.bigtable.data.v2.models.MutateRowsException: Some mutations failed to apply

at com.google.cloud.bigtable.data.v2.stub.mutaterows.MutateRowsAttemptCallable.handleAttemptSuccess(MutateRowsAttemptCallable.java:290)

at com.google.cloud.bigtable.data.v2.stub.mutaterows.MutateRowsAttemptCallable.access$000(MutateRowsAttemptCallable.java:87)

at com.google.cloud.bigtable.data.v2.stub.mutaterows.MutateRowsAttemptCallable$2.apply(MutateRowsAttemptCallable.java:121)

at com.google.cloud.bigtable.data.v2.stub.mutaterows.MutateRowsAttemptCallable$2.apply(MutateRowsAttemptCallable.java:118)

at com.google.api.core.ApiFutures$GaxFunctionToGuavaFunction.apply(ApiFutures.java:204)

at com.google.common.util.concurrent.AbstractTransformFuture$TransformFuture.doTransform(AbstractTransformFuture.java:243)

at com.google.common.util.concurrent.AbstractTransformFuture$TransformFuture.doTransform(AbstractTransformFuture.java:233)

at com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:118)

at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30)

at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1139)

at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:958)

at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:726)

at com.google.common.util.concurrent.AbstractCatchingFuture.run(AbstractCatchingFuture.java:93)

at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30)

at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1139)

at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:958)

at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:726)

at com.google.api.core.AbstractApiFuture$InternalSettableFuture.set(AbstractApiFuture.java:90)

at com.google.api.core.AbstractApiFuture.set(AbstractApiFuture.java:73)

at com.google.api.gax.rpc.SpoolingResponseObserver$MyFuture.set(SpoolingResponseObserver.java:84)

at com.google.api.gax.rpc.SpoolingResponseObserver.onCompleteImpl(SpoolingResponseObserver.java:72)

at com.google.api.gax.rpc.StateCheckingResponseObserver.onComplete(StateCheckingResponseObserver.java:74)

at com.google.api.gax.tracing.TracedResponseObserver.onComplete(TracedResponseObserver.java:109)

at com.google.api.gax.grpc.ExceptionResponseObserver.onCompleteImpl(ExceptionResponseObserver.java:89)

at com.google.api.gax.rpc.StateCheckingResponseObserver.onComplete(StateCheckingResponseObserver.java:74)

at com.google.api.gax.grpc.GrpcDirectStreamController$ResponseObserverAdapter.onClose(GrpcDirectStreamController.java:144)

at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)

at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)

at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)

at io.grpc.internal.CensusStatsModule$StatsClientInterceptor$1$1.onClose(CensusStatsModule.java:700)

at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)

at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)

at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)

at io.grpc.internal.CensusTracingModule$TracingClientInterceptor$1$1.onClose(CensusTracingModule.java:399)

at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:500)

at io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:65)

at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.close(ClientCallImpl.java:592)

at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.access$700(ClientCallImpl.java:508)

at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:632)

at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)

at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

Suppressed: com.google.api.gax.rpc.AsyncTaskException: Asynchronous task failed

	at com.google.api.gax.rpc.ApiExceptions.callAndTranslateApiException(ApiExceptions.java:57)

	at com.google.api.gax.rpc.UnaryCallable.call(UnaryCallable.java:112)

	at ca.loblaw.kafka.connect.bigtable.util.HelloWorld.writeToTableInBulk11(HelloWorld.java:114)

	at ca.loblaw.kafka.connect.bigtable.util.HelloWorld.run(HelloWorld.java:81)

	at ca.loblaw.kafka.connect.bigtable.util.HelloWorld.main(HelloWorld.java:52)

Metadata

Metadata

Assignees

Labels

api: bigtableIssues related to the googleapis/java-bigtable-hbase API.type: questionRequest for information or clarification. Not an issue.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions