Thank you for reply!
No, the error message is empty. I patched the grpc code and put unique
error messages in all the places where UNIMPLEMENTED status was returned.
What I figured out is that it was a completion tag of type
UnimplementedAsyncRequest that is placed on server cq(
src/cpp/server/server_cc.cc:line 557) on startup and is apparently not
supposed to be picked up by Next method unless something goes wrong(this is
my understanding of grpc code). When 'FinalizeResults' for this tag is
called it allocates a tag of type
UnimplementedAsyncResponse which in turn calls UnknownMethodHandler::FillOps
that issues the abovementioned status
(include/grpcpp/impl/codegen/method_handler_impl.h) :
class UnknownMethodHandler : public MethodHandler {
public:
template <class T>
static void FillOps(ServerContext* context, T* ops) {
Status status(StatusCode::UNIMPLEMENTED, "");
if (!context->sent_initial_metadata_) {
ops->SendInitialMetadata(context->initial_metadata_,
context->initial_metadata_flags());
if (context->compression_level_set()) {
ops->set_compression_level(context->compression_level());
}
context->sent_initial_metadata_ = true;
}
ops->ServerSendStatus(context->trailing_metadata_, status);
}.
On Thursday, September 13, 2018 at 6:36:30 PM UTC-4, Carl Mastrangelo wrote:
>
> Is there an error message provided with Unimplemented? Usually that error
> code is for calling a method that the server doesn't know about.
>
> On Thursday, September 13, 2018 at 11:02:34 AM UTC-7, solomon lifshits
> wrote:
>>
>> Unable to connect to grpc server using SSL credentials, while connection
>> without works ok.
>>
>>
>> Status 12(unimplemented) is returned.
>>
>>
>> *Client connection code:*
>>
>>
>> std::string grpc_host(/*m_sIP*/m_sDestination + ":" +
>> std::to_string(Config::config().grpc_port));
>>
>> std::string grpc_ip(m_sIP + ":" +
>> std::to_string(Config::config().grpc_port));
>>
>> grpc::ChannelArguments channelArgs;
>>
>> grpc::SslCredentialsOptions sslOpts;
>>
>> utils::getFileContent(Config::config().ssl.chain_cert_file_path,
>> sslOpts.pem_root_certs);
>>
>> utils::getFileContent(Config::config().ssl.key_file_path,
>> sslOpts.pem_private_key);
>>
>> utils::getFileContent(Config::config().ssl.cert_file_path,
>> sslOpts.pem_cert_chain);
>>
>>
>>
>> m_pStub = ClientServer::NewStub(grpc::CreateCustomChannel(grpc_ip,
>> grpc::SslCredentials(sslOpts), channelArgs));
>>
>> m_pStub->AsyncStartLogRetrieval(&calldata->context, lctx->header(),
>> m_Poller.cq());
>>
>>
>>
>> *Server connection code:*
>>
>> grpc::SslServerCredentialsOptions
>> sslOpts(GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE);
>>
>> std::string certificate;
>>
>> std::string chaincert;
>>
>> std::string key;
>>
>> std::string rootca;
>>
>> utils::getFileContent(config.Certificate(),certificate)
>>
>> utils::getFileContent(config.ChainCert(), chaincert);
>>
>> utils::getFileContent(config.PrivateKey(), key);
>>
>> utils::getFileContent(config.RootCA(), rootca);
>>
>>
>>
>> LOGINFO("successfully load TLS secrets");
>>
>> grpc::SslServerCredentialsOptions::PemKeyCertPair kcp =
>> { key, certificate };
>>
>> sslOpts.pem_root_certs = rootca;
>>
>> sslOpts.pem_key_cert_pairs.push_back ( kcp );
>>
>> std::shared_ptr<grpc::ServerCredentials> serverCred;
>>
>> if (m_conf->EnableTLS() == true)
>>
>> {
>>
>> serverCred = grpc::SslServerCredentials(sslOpts);
>>
>> }
>>
>> else
>>
>> {
>>
>> serverCred = grpc::InsecureServerCredentials();
>>
>> }
>>
>>
>> builder.AddListeningPort(m_serveraddress, serverCred);
>>
>> builder.AddListeningPort(m_serveraddress_ss, serverCred);
>>
>>
>> builder.RegisterService(m_serveraddress, &m_service);
>>
>> builder.RegisterService(m_serveraddress_ss, &m_service_ss);
>>
>>
>> m_Cq = builder.AddCompletionQueue();
>>
>> m_server = builder.BuildAndStart();
>>
>>
>> m_server->GrpcService().RequestStartLogRetrieval(&m_ctx,
>>
>> &m_logHeader,
>>
>> &m_responder,
>>
>> m_Cq.get(),
>>
>> m_Cq.get(),
>>
>> this);
>>
>>
>>
>>
>> *grpc log server side*
>>
>>
>>
>>
>> 1536861059.980 I bzs.cc:141: main():successfully load TLS secrets
>> 1536861059.980 I bzs.cc:142: main():TEST ONLY: cert = 1736 key= 1708
>> rootca= 2701
>> D0913 17:50:59.981257225 10521 ev_posix.cc:142] Using
>> polling engine: epollex
>> D0913 17:50:59.981354852 10521 dns_resolver.cc:331] Using
>> native dns resolver
>> I0913 17:50:59.981398500 10521 init.cc:155]
>> grpc_init(void)
>> I0913 17:50:59.981423808 10521 completion_queue.cc:433]
>> grpc_completion_queue_create_internal(completion_type=0, polling_type=0)
>> I0913 17:50:59.981442286 10521 init.cc:155]
>> grpc_init(void)
>> I0913 17:50:59.981473600 10521 server.cc:944]
>> grpc_server_create(0xffe70c24, (nil))
>> I0913 17:50:59.981486846 10521 server.cc:930]
>> grpc_server_register_completion_queue(server=0x89ebbc8, cq=0x89eb998,
>> reserved=(nil))
>> I0913 17:50:59.981499676 10521 server.cc:978]
>> grpc_server_register_method(server=0x89ebbc8,
>> method=/banzai.ClientServer/StartLogRetrieval, host=198.18.87.44:50051,
>> flags=0x00000000)
>> I0913 17:50:59.981511620 10521 server.cc:978]
>> grpc_server_register_method(server=0x89ebbc8,
>> method=/banzai.ClientServer/SendBlock, host=198.18.87.44:50051,
>> flags=0x00000000)
>> I0913 17:50:59.981529888 10521 server.cc:978]
>> grpc_server_register_method(server=0x89ebbc8,
>> method=/banzai.ServerServer/GetChunks, host=198.18.87.44:50052,
>> flags=0x00000000)
>> I0913 17:50:59.981542015 10521 server.cc:978]
>> grpc_server_register_method(server=0x89ebbc8,
>> method=/banzai.ServerServer/GetChunkMetadata, host=198.18.87.44:50052,
>> flags=0x00000000)
>> I0913 17:50:59.981561414 10521 server_secure_chttp2.cc:50]
>> grpc_server_add_secure_http2_port(server=0x89ebbc8,
>> addr=198.18.87.44:50051, creds=0x89e95e0)
>> I0913 17:50:59.983945963 10521 server_secure_chttp2.cc:50]
>> grpc_server_add_secure_http2_port(server=0x89ebbc8,
>> addr=198.18.87.44:50052, creds=0x89e95e0)
>> I0913 17:50:59.985015540 10521 server.cc:1024]
>> grpc_server_start(server=0x89ebbc8)
>> I0913 17:50:59.985044734 10521 call_details.cc:31]
>> grpc_call_details_init(cd=0x8a118f0)
>> I0913 17:50:59.985057268 10521 server.cc:1336]
>> grpc_server_request_call(server=0x89ebbc8, call=0x8a118ec,
>> details=0x8a118f0, initial_metadata=0x8a11958,
>> cq_bound_to_call=0x89eb998, cq_for_notification=0x89eb998, tag=0x8a118d0)
>> 1536861059.985 I server.cc:60: Run():Server listening on:
>> 198.18.87.44:50051
>> I0913 17:50:59.985269613 10535 server.cc:1385]
>> grpc_server_request_registered_call(server=0x89ebbc8, rmp=0x89eedb8,
>> call=0xf38006dc, deadline=0xf3800484, initial_metadata=0xf38004a8,
>> optional_payload=0xf3800700, cq_bound_to_call=0x89eb998,
>> cq_for_notification=0x89eb998, tag=0xf38006c0)
>> 1536861059I0913 17:50:59.985299807 10534 server.cc:1385]
>> grpc_server_request_registered_call(server=0x89ebbc8, rmp=0x89ebe68,
>> call=0xf3a00684, deadline=0xf3a00484, initial_metadata=0xf3a004a8,
>> optional_payload=0xf3a006a8, cq_bound_to_call=0x89eb998,
>> cq_for_notification=0x89eb998, tag=0xf3a00668)
>> I0913 17:50:59.985328278 10534 completion_queue.cc:853]
>> grpc_completion_queue_next(cq=0x89eb998, deadline=gpr_timespec { tv_sec:
>> 9223372036854775807, tv_nsec: 0, clock_type: 1 }, reserved=(nil))
>> .985 I server.cc:85: HandleBzcRpcs():handle rpc call from client
>> I0913 17:50:59.985385393 10535 completion_queue.cc:853]
>> grpc_completion_queue_next(cq=0x89eb998, deadline=gpr_timespec { tv_sec:
>> 9223372036854775807, tv_nsec: 0, clock_type: 1 }, reserved=(nil))
>> I0913 17:52:29.390936255 10534 security_context.cc:295]
>> grpc_auth_context_add_cstring_property(ctx=0xf3a00748,
>> name=transport_security_type, value=ssl)
>> I0913 17:52:29.390979766 10534 security_context.cc:279]
>> grpc_auth_context_add_property(ctx=0xf3a00748, name=ssl_session_reused,
>> value= false, value_length=6)
>> I0913 17:52:29.391512134 10534 call.cc:1552] ops[0]:
>> RECV_INITIAL_METADATA ptr=0xf3a17d54
>> I0913 17:52:29.391560744 10534 completion_queue.cc:632]
>> cq_end_op_for_next(cq=0x89eb998, tag=0x8a118d0, error="No Error",
>> done=0x837f8d0, done_arg=0x8a11d98, storage=0x8a11db4)
>> I0913 17:52:29.391580272 10534 completion_queue.cc:953]
>> RETURN_EVENT[0x89eb998]: OP_COMPLETE: tag:0x8a118d0 OK
>> I0913 17:52:29.391595925 10534 call.cc:1926]
>> grpc_call_start_batch(call=0xf3a177a0, ops=0xf4bfec7c, nops=1,
>> tag=0xf3a16c50, reserved=(nil))
>> I0913 17:52:29.391607536 10534 call.cc:1552] ops[0]:
>> RECV_CLOSE_ON_SERVER cancelled=0xf3a16c7c
>> I0913 17:52:29.391621173 10534 call_details.cc:31]
>> grpc_call_details_init(cd=0xf3a0b510)
>> I0913 17:52:29.391634021 10534 server.cc:1336]
>> grpc_server_request_call(server=0x89ebbc8, call=0xf3a0b50c,
>> details=0xf3a0b510, initial_metadata=0xf3a0b578,
>> cq_bound_to_call=0x89eb998, cq_for_notification=0x89eb998, tag=0xf3a0b4f0)
>> I0913 17:52:29.391651465 10534 call.cc:1926]
>> grpc_call_start_batch(call=0xf3a177a0, ops=0xf4bfebdc, nops=2,
>> tag=0xf3a16c88, reserved=(nil))
>> I0913 17:52:29.391662933 10534 call.cc:1552] ops[0]:
>> SEND_INITIAL_METADATA(nil)
>> I0913 17:52:29.391674168 10534 call.cc:1552] ops[1]:
>> SEND_STATUS_FROM_SERVER status=12 details=(null)(nil)
>> I0913 17:52:29.391698494 10534 completion_queue.cc:632]
>> cq_end_op_for_next(cq=0x89eb998, tag=0xf3a16c50, error="No Error",
>> done=0x8378fd0, done_arg=0xf3a18990, storage=0xf3a18994)
>> I0913 17:52:29.391729534 10534 completion_queue.cc:632]
>> cq_end_op_for_next(cq=0x89eb998, tag=0xf3a16c88, error="No Error",
>> done=0x8378fd0, done_arg=0xf3a18a10, storage=0xf3a18a14)
>> I0913 17:52:29.391743776 10534 completion_queue.cc:853]
>> grpc_completion_queue_next(cq=0x89eb998, deadline=gpr_timespec { tv_sec:
>> 9223372036854775807, tv_nsec: 0, clock_type: 1 }, reserved=(nil))
>> I0913 17:52:29.391763139 10534 completion_queue.cc:953]
>> RETURN_EVENT[0x89eb998]: OP_COMPLETE: tag:0xf3a16c88 OK
>> I0913 17:52:29.391774396 10534 call.cc:568]
>> grpc_call_unref(c=0xf3a177a0)
>> I0913 17:52:29.391748870 10535 completion_queue.cc:953]
>> RETURN_EVENT[0x89eb998]: OP_COMPLETE: tag:0xf3a16c50 OK
>> I0913 17:52:29.391785787 10534 metadata_array.cc:34]
>> grpc_metadata_array_destroy(array=0xf3a17d54)
>> I0913 17:52:29.391853468 10534 metadata_array.cc:34]
>> grpc_metadata_array_destroy(array=0x8a11958)
>> I0913 17:52:29.391833145 10535 completion_queue.cc:853]
>> grpc_completion_queue_next(cq=0x89eb998, deadline=gpr_timespec { tv_sec:
>> 9223372036854775807, tv_nsec: 0, clock_type: 1 }, reserved=(nil))
>> I0913 17:52:29.391878503 10534 completion_queue.cc:853]
>> grpc_completion_queue_next(cq=0x89eb998, deadline=gpr_timespec { tv_sec:
>>
>> 9223372036854775807, tv_nsec: 0, clock_type: 1 }, reserved=(nil))
>>
>>
>>
>>
>> Any thoughts on potential cause?
>>
>>
>>
>>
>>
>>
--
You received this message because you are subscribed to the Google Groups
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit
https://groups.google.com/d/msgid/grpc-io/65f96589-9e1a-4578-9848-8607bb5207ad%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.