ThatDiveGuy
01/13/2025, 11:54 AMSchemaServiceGrpc.newBlockingStub(channel).withCallCredentials(BearerToken(presharedKey))
specifically the withCallCredentials part, I get the error apply() or fail() already called
. Any ideas why? I know it happens during the applier.apply(headers);
step in BearerToken.vroldanbet
01/13/2025, 12:29 PMManagedChannel channel = ManagedChannelBuilder
.forTarget("localhost:50051")
.usePlaintext()
.build();
BearerToken bearerToken = new BearerToken("foobar");
SchemaServiceGrpc.SchemaServiceBlockingStub schemaService = SchemaServiceGrpc.
newBlockingStub(channel).
withCallCredentials(bearerToken);
ThatDiveGuy
01/13/2025, 12:59 PMmavenBom("io.grpc:grpc-bom:1.68.1")
...
implementation ("com.authzed.api:authzed:v1.1.0")
implementation ("io.grpc:grpc-protobuf")
implementation ("io.grpc:grpc-stub")
val channelBuilder = ManagedChannelBuilder
.forTarget(spicedbUrl)
if (secure)
channelBuilder.useTransportSecurity()
if (!secure)
channelBuilder.usePlaintext()
val channel = channelBuilder.build()
val schema = resourceLoader.getResource("classpath:spicedb/schema.zed").inputStream.bufferedReader().use { it.readText() }
val schemaService = SchemaServiceGrpc.newBlockingStub(channel).withCallCredentials(BearerToken(presharedKey))
Exception in thread "grpc-default-executor-0" java.lang.IllegalStateException: apply() or fail() already called
at com.google.common.base.Preconditions.checkState(Preconditions.java:513)
at io.grpc.internal.MetadataApplierImpl.fail(MetadataApplierImpl.java:84)
at com.authzed.grpcutil.BearerToken.lambda$applyRequestMetadata$0(BearerToken.java:31)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
yetitwo
01/13/2025, 2:57 PMyetitwo
01/13/2025, 2:58 PMThatDiveGuy
01/13/2025, 2:59 PMThatDiveGuy
01/13/2025, 3:00 PMyetitwo
01/13/2025, 3:26 PMThatDiveGuy
01/13/2025, 3:28 PMyetitwo
01/13/2025, 3:51 PMThatDiveGuy
01/13/2025, 3:51 PMyetitwo
01/13/2025, 3:51 PMyetitwo
01/13/2025, 3:52 PMThatDiveGuy
01/13/2025, 3:53 PM10:51:07.253 [grpc-default-executor-0] INFO n.e.central.security.BearerToken - BearerToken error:
java.lang.NoSuchMethodError: 'boolean com.google.protobuf.GeneratedMessage.isStringEmpty(java.lang.Object)'
at com.authzed.api.v1.WriteSchemaRequest.getSerializedSize(WriteSchemaRequest.java:126)
at io.grpc.protobuf.lite.ProtoInputStream.available(ProtoInputStream.java:108)
at io.grpc.internal.MessageFramer.getKnownLength(MessageFramer.java:204)
at io.grpc.internal.MessageFramer.writePayload(MessageFramer.java:139)
at io.grpc.internal.AbstractStream.writeMessage(AbstractStream.java:66)
at io.grpc.internal.DelayedStream$6.run(DelayedStream.java:282)
at io.grpc.internal.DelayedStream.drainPendingCalls(DelayedStream.java:182)
at io.grpc.internal.DelayedStream.access$100(DelayedStream.java:44)
at io.grpc.internal.DelayedStream$4.run(DelayedStream.java:148)
at io.grpc.internal.MetadataApplierImpl.finalizeWith(MetadataApplierImpl.java:111)
at io.grpc.internal.MetadataApplierImpl.apply(MetadataApplierImpl.java:78)
It happens during headers.put(META_DATA_KEY, header)
yetitwo
01/13/2025, 3:55 PMThatDiveGuy
01/13/2025, 3:56 PMThatDiveGuy
01/13/2025, 3:56 PMyetitwo
01/13/2025, 3:57 PMThatDiveGuy
01/13/2025, 3:57 PMyetitwo
01/13/2025, 4:00 PMThatDiveGuy
01/13/2025, 4:00 PMThatDiveGuy
01/13/2025, 4:01 PMif (!com.google.protobuf.GeneratedMessage.isStringEmpty(schema_)) {
in WriteSchemaRequest.java but it should be referencing if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(schema_)) {
yetitwo
01/13/2025, 4:06 PMyetitwo
01/13/2025, 4:06 PMThatDiveGuy
01/13/2025, 4:06 PMThatDiveGuy
01/13/2025, 4:06 PMThatDiveGuy
01/13/2025, 4:07 PMyetitwo
01/13/2025, 4:07 PMyetitwo
01/13/2025, 4:08 PMyetitwo
01/13/2025, 4:09 PMyetitwo
01/13/2025, 4:09 PMThatDiveGuy
01/13/2025, 4:10 PMThatDiveGuy
01/13/2025, 4:23 PMThatDiveGuy
01/13/2025, 4:25 PMThatDiveGuy
01/13/2025, 4:38 PMyetitwo
01/13/2025, 5:39 PM