That was it. Fork!! The process was spawned on 3/5.
Thanks! How can two servers bind to the same ip&port ? On Monday, March 11, 2019 at 3:47:18 PM UTC-4, Michael Lumish wrote: > > Can you make sure you don't have any other servers running on that same > machine? One possibility here is that another gRPC service without that > method implemented is bound to this port and either the bind call is > failing (the example code does not check the return value), or they are > both binding the port and the incoming connection is going to the wrong one. > > On Mon, Mar 11, 2019 at 12:01 PM Rob Cecil <[email protected] > <javascript:>> wrote: > >> https://gist.github.com/robcecil/1f030e2c8bfa45b567128e50e2156dad >> >> Running Node v11.10.0 on Ubuntu Comic 18.10. >> >> >> On Monday, March 11, 2019 at 2:30:13 PM UTC-4, Rob Cecil wrote: >>> >>> I updated everything: >>> >>> wander@peniche:~/control-web$ npm list --depth=0 2>/dev/null >>> [email protected] /home/wander/control-web >>> ├── @grpc/[email protected] >>> ├── [email protected] >>> ├── [email protected] >>> ├── [email protected] >>> ├── [email protected] >>> ├── [email protected] >>> ├── [email protected] >>> ├── [email protected] >>> └── [email protected] >>> >>> I still see the same behavior. >>> >>> If I change my server.,js: >>> >>> function main() { >>> var server = new grpc.Server(); >>> server.addService(test.Greeter.service, { >>> sayHello: SayHello, >>> sayHelp: SayHelp >>> }); >>> //console.dir(util.inspect(server, showHidden=false, depth=5, >>> colorize=false)); >>> server.bind(argv.h, grpc.ServerCredentials.createInsecure()); >>> server.start(); >>> } >>> >>> Restart, ... I see the same behavior. >>> >>> >>> On Monday, March 11, 2019 at 12:41:14 PM UTC-4, Michael Lumish wrote: >>>> >>>> Can you try updating your dependencies? I just tried running the given >>>> code with the latest versions of grpc and @grpc/proto-loader and it >>>> worked. >>>> There was previously an issue that the library would not accept method >>>> names with the same casing as in the original proto file, but that was >>>> fixed a while ago. >>>> >>>> As a side note, the `keepCase` option in `proto-loader` affects message >>>> field names. If it is not set, the field names are transformed to camel >>>> case. >>>> >>>> On Mon, Mar 11, 2019 at 8:14 AM 'Mya Pitzeruse' via grpc.io < >>>> [email protected]> wrote: >>>> >>>>> On the server side, try using lowercase names instead of title case: >>>>> >>>>> server.addService(test.Greeter.service, { >>>>> sayHello: SayHello, >>>>> sayHelp: SayHelp >>>>> }); >>>>> >>>>> I would assume that using "keepCase: true" meant that they would >>>>> require these to be the same as the proto. But here's an example where I >>>>> use the same loader semantic and the same casing: >>>>> >>>>> https://github.com/mjpitz/des/blob/master/api/extractor.proto#L19 >>>>> https://github.com/mjpitz/des/blob/master/api/extractor.js#L8 >>>>> >>>>> And all of my service methods are use camel case instead of the case I >>>>> used in the proto file: >>>>> >>>>> https://github.com/mjpitz/des/blob/master/src/service/unasyncify.ts#L9 >>>>> >>>>> >>>>> On Sat, Mar 9, 2019 at 10:08 AM Rob Cecil <[email protected]> wrote: >>>>> >>>>>> I'm experienced with Grpc - having built iOS/ObjC front-end and C# >>>>>> backend over a two year period (a Grpc project consisting of a main >>>>>> proto >>>>>> with a service that has 27 methods, and about a dozen supporting protos >>>>>> for >>>>>> message definitions). >>>>>> >>>>>> I am however, not super experienced with web development, so I am a >>>>>> little frustrated atm, trying to get simple things to work with >>>>>> Grpc-node. >>>>>> I started with something simple - the HelloWorld example and modified it >>>>>> from there. >>>>>> >>>>>> Here is my current "test.proto": >>>>>> >>>>>> syntax = "proto3"; >>>>>> >>>>>> >>>>>> package helloworld; >>>>>> >>>>>> >>>>>> service Greeter { >>>>>> rpc SayHello(FooBarRequest) returns (FooBarReply); >>>>>> rpc SayHelp(FooBarRequest) returns (FooBarReply); >>>>>> } >>>>>> >>>>>> >>>>>> message FooBarRequest { >>>>>> string name = 1; >>>>>> } >>>>>> >>>>>> message FooBarReply { >>>>>> string message = 1; >>>>>> } >>>>>> >>>>>> >>>>>> server.js: >>>>>> >>>>>> const _ = require('lodash'); >>>>>> const grpc = require('grpc'); >>>>>> const protoLoader = require('@grpc/proto-loader'); >>>>>> >>>>>> >>>>>> const argv = require("minimist")(process.argv.slice(2)); >>>>>> console.dir(argv); >>>>>> >>>>>> >>>>>> if (!argv.h) { >>>>>> console.log("Please start server.js with -h xx.xx.xx.xx:xxxx"); >>>>>> process.exit(1); >>>>>> } >>>>>> console.log(`Starting server.js on : ${argv.h}`); >>>>>> >>>>>> >>>>>> const PROTOS_PATH = __dirname + '/../protos/'; >>>>>> const BESERVICE_PROTO_PATH = PROTOS_PATH + 'test.proto'; >>>>>> >>>>>> >>>>>> const beDefinition = protoLoader.loadSync( >>>>>> BESERVICE_PROTO_PATH, >>>>>> {keepCase: true, >>>>>> longs: String, >>>>>> enums: String, >>>>>> defaults: true, >>>>>> oneofs: true >>>>>> }); >>>>>> >>>>>> >>>>>> const test = grpc.loadPackageDefinition(beDefinition).helloworld; >>>>>> >>>>>> >>>>>> function SayHello(call, callback) { >>>>>> callback(null, {message: 'Hello ' + call.request.name}); >>>>>> } >>>>>> >>>>>> >>>>>> function SayHelp(call, callback) { >>>>>> callback(null, {message: 'Help! ' + call.request.name}); >>>>>> } >>>>>> >>>>>> >>>>>> function main() { >>>>>> var server = new grpc.Server(); >>>>>> server.addService(test.Greeter.service, { >>>>>> SayHello: SayHello, >>>>>> SayHelp: SayHelp >>>>>> }); >>>>>> server.bind(argv.h, grpc.ServerCredentials.createInsecure()); >>>>>> server.start(); >>>>>> } >>>>>> >>>>>> main(); >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> client.js: >>>>>> >>>>>> const grpc = require('grpc'); >>>>>> const util = require('util') >>>>>> const protoLoader = require('@grpc/proto-loader'); >>>>>> const argv = require("minimist")(process.argv.slice(2)); >>>>>> console.dir(argv); >>>>>> >>>>>> >>>>>> if (!argv.h) { >>>>>> console.log("Please start with -h xx.xx.xx.xx:xxxx"); >>>>>> process.exit(1); >>>>>> } >>>>>> console.log(`Starting Node backend client on : ${argv.h}`); >>>>>> >>>>>> >>>>>> const PROTOS_PATH = __dirname + '/../protos/'; >>>>>> const BESERVICE_PROTO_PATH = PROTOS_PATH + 'test.proto'; >>>>>> >>>>>> >>>>>> const beDefinition = protoLoader.loadSync( >>>>>> BESERVICE_PROTO_PATH, >>>>>> {keepCase: true, >>>>>> longs: String, >>>>>> enums: String, >>>>>> defaults: true, >>>>>> oneofs: true >>>>>> }); >>>>>> >>>>>> >>>>>> const test = grpc.loadPackageDefinition(beDefinition).helloworld; >>>>>> >>>>>> >>>>>> function main() { >>>>>> var client = new test.Greeter(argv.h, grpc.credentials. >>>>>> createInsecure()); >>>>>> >>>>>> client.SayHello({ name: 'Darth' }, {}, (err, response) => { >>>>>> if (err) { >>>>>> console.error("error calling SayHello", err); >>>>>> return >>>>>> } >>>>>> console.log('Greeting:', response.message); >>>>>> >>>>>> >>>>>> client.SayHelp({ name: 'Darth' }, {}, (err, response) => { >>>>>> if (err) { >>>>>> console.error("error calling SayHelp", err); >>>>>> return >>>>>> } >>>>>> console.log('Help! ', response.message); >>>>>> }); >>>>>> }); >>>>>> } >>>>>> >>>>>> main(); >>>>>> >>>>>> >>>>>> I run the client and server on the same machine, using the same >>>>>> command line argument for the same host & port. >>>>>> >>>>>> Can anyone explain why I get "RPC method not implemented" on the >>>>>> second method defined in the Greeter service above? >>>>>> >>>>>> wander@peniche:~/control-web/js$ !1186 >>>>>> node server.js -h 172.16.0.168:9090 & >>>>>> [1] 57465 >>>>>> wander@peniche:~/control-web/js$ { _: [], h: '172.16.0.168:9090' } >>>>>> Starting server.js on : 172.16.0.168:9090 >>>>>> >>>>>> >>>>>> wander@peniche:~/control-web/js$ !1187 >>>>>> node backendservice-node-client.js -h 172.16.0.168:9090 >>>>>> { _: [], h: '172.16.0.168:9090' } >>>>>> Starting Node backend client on : 172.16.0.168:9090 >>>>>> Greeting: Hello! Darth >>>>>> error calling SayHelp { Error: 12 UNIMPLEMENTED: RPC method not >>>>>> implemented /helloworld.Greeter/SayHelp >>>>>> at Object.exports.createStatusError (/home/wander/control-web/ >>>>>> node_modules/grpc/src/common.js:91:15) >>>>>> at Object.onReceiveStatus (/home/wander/control-web/node_modules/ >>>>>> grpc/src/client_interceptors.js:1204:28) >>>>>> at InterceptingListener._callNext (/home/wander/control-web/ >>>>>> node_modules/grpc/src/client_interceptors.js:568:42) >>>>>> at InterceptingListener.onReceiveStatus (/home/wander/control-web >>>>>> /node_modules/grpc/src/client_interceptors.js:618:8) >>>>>> at callback (/home/wander/control-web/node_modules/grpc/src/ >>>>>> client_interceptors.js:845:24) >>>>>> code: 12, >>>>>> metadata: Metadata { _internal_repr: {} }, >>>>>> details: 'RPC method not implemented /helloworld.Greeter/SayHelp' } >>>>>> >>>>>> >>>>>> If i remove the SayHelp method in the proto and update the client & >>>>>> server code, it works fine. >>>>>> >>>>>> THANKS >>>>>> >>>>>> -- >>>>>> 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/3c7c48bc-3612-4c7e-9b30-9a30e47d1286%40googlegroups.com >>>>>> >>>>>> <https://groups.google.com/d/msgid/grpc-io/3c7c48bc-3612-4c7e-9b30-9a30e47d1286%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> Mya Pitzeruse >>>>> >>>>> Senior Software Engineer - Service Infrastructure >>>>> >>>>> Gender Pronouns: She, Her, Hers >>>>> >>>>> [email protected] >>>>> >>>>> >>>>> Indeed - We help people get jobs. >>>>> >>>>> Indeed.com <http://www.indeed.com/> >>>>> >>>>> Facebook <http://www.facebook.com/indeed> | >>>>> <http://www.twitter.com/indeed> >>>>> >>>> -- >> 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] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> 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/9bcbda49-2257-4543-abc9-bc5b2600581d%40googlegroups.com >> >> <https://groups.google.com/d/msgid/grpc-io/9bcbda49-2257-4543-abc9-bc5b2600581d%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > -- 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/4fb6e6e8-79eb-4a44-a289-a0ba73c53fb3%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
