Giter VIP home page Giter VIP logo

octo-rpc's People

Contributors

ddddiablo avatar soulteary avatar wuxinyua avatar yangruiemma avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

octo-rpc's Issues

无法启动

Description:

The Bean Validation API is on the classpath but no implementation could be found

Action:

Add an implementation, such as Hibernate Validator, to the classpath

14:27:53.098 [main] INFO com.meituan.dorado.registry.RegistryPolicy - Unregister RegistryInfo:{appkey=com.meituan.octo.dorado.benchmark.server,serviceNames=[com.meituan.dorado.test.thrift.api.Echo],ip=172.18.86.138,port=9003,weight=10.0,protocol=thrift,env=test,version=dorado-v1.0.0,attachments={registryWay=mock}} by com.meituan.dorado.registry.mock.MockRegistryService
14:27:53.098 [main] INFO com.meituan.dorado.transport.AbstractServer - Closing com.meituan.dorado.transport.netty.NettyServer bind 0.0.0.0/0.0.0.0:9003
14:27:53.101 [main] INFO com.meituan.dorado.bootstrap.provider.ServicePublisher - Dorado service unpublished: [com.meituan.dorado.test.thrift.api.Echo]
14:27:53.110 [main] ERROR com.meituan.dorado.server.ServerRunner - SpringBoot start failed.
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'standardJacksonObjectMapperBuilderCustomizer' defined in class path resource [org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration.class]: Unsatisfied dependency expressed through method 'standardJacksonObjectMapperBuilderCustomizer' parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties': Initialization of bean failed; nested exception is javax.validation.ValidationException: Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:467) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1178) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1072) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) ~[spring-context-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) ~[spring-context-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) ~[spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) ~[spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) ~[spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) ~[spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at com.meituan.dorado.server.ServerRunner.main(ServerRunner.java:34) [classes/:?]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties': Initialization of bean failed; nested exception is javax.validation.ValidationException: Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1136) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1064) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
... 18 more
Caused by: javax.validation.ValidationException: Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:271) ~[validation-api-1.1.0.Final.jar:?]
at org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.afterPropertiesSet(LocalValidatorFactoryBean.java:255) ~[spring-context-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor$LocalValidatorFactory.run(ConfigurationPropertiesBindingPostProcessor.java:453) ~[spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.getValidator(ConfigurationPropertiesBindingPostProcessor.java:387) ~[spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.determineValidator(ConfigurationPropertiesBindingPostProcessor.java:370) ~[spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:332) ~[spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:303) ~[spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:407) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1623) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1136) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1064) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.3.20.RELEASE.jar:4.3.20.RELEASE]
... 18 more

编译遇到问题

你好,我在尝试用c++编译whale,遇到了一个问题,编译error如下:
octoidl/include/octoidl/ServiceAgent.h:705:55: error: invalid covariant return type for 'virtual boost::shared_ptr meituan_mns::ServiceAgentProcessorFactory::getProcessor(const apache::thrift::TConnectionInfo
&)'
::boost::shared_ptr< ::apache::thrift::TProcessor > getProcessor(const ::apache::thrift::TConnectionInfo& connInfo);
^
In file included from external/cpp3rd_lib/thrift/include/thrift/transport/TFileTransport.h:25:0,
from external/cpp3rd_lib/thrift/include/thrift/transport/TTransportUtils.h:30,
from whale/cthrift/util/cthrift_common.h:54,
from whale/cthrift/util/cthrift_common.cc:26:
external/cpp3rd_lib/thrift/include/thrift/TProcessor.h:215:42: error: overriding 'virtual std::shared_ptrapache::thrift::TProcessor apache::thrift::TProcessorFactory::getProcessor(const apache::thrift::TConnectionInfo&)'
virtual stdcxx::shared_ptr getProcessor(const TConnectionInfo& connInfo) = 0;

好像是因为我用的thrift0.12是采用的c++11标准,智能指针用的标准库。你们这个用的boost。你们的octoidl源码公开了嘛?这里只有静态库没有源代码。你们工程中thrift用的哪个版本?

NPE when access http://localhost:5080/service.info

java.lang.NullPointerException: null at com.meituan.dorado.check.http.DoradoHttpCheckHandler.getServiceBaseInfo(DoradoHttpCheckHandler.java:125) ~[dorado-1.0.0.jar:na] at com.meituan.dorado.check.http.DoradoHttpCheckHandler.handleHttpCheckReq(DoradoHttpCheckHandler.java:91) ~[dorado-1.0.0.jar:na] at com.meituan.dorado.check.http.DoradoHttpCheckHandler.handle(DoradoHttpCheckHandler.java:84) ~[dorado-1.0.0.jar:na] at com.meituan.dorado.transport.http.netty.NettyHttpServerHandler.channelRead(NettyHttpServerHandler.java:74) ~[dorado-1.0.0.jar:na] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323) [netty-codec-4.1.33.Final.jar:4.1.33.Final] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297) [netty-codec-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:677) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:612) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:529) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:491) [netty-transport-4.1.33.Final.jar:4.1.33.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905) [netty-common-4.1.33.Final.jar:4.1.33.Final] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.33.Final.jar:4.1.33.Final] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_171]

The logic to get service port seems incorrect

            int port = ServicePublisher.getServiceServerMap().get(serviceName).getLocalAddress().getPort();
            String portStr = String.valueOf(port);

origin thrift Java client can't invoke a octo service

Hi,

I have a origin thrift java client, but can't invoke the octo service as well.
the client code is blocked in line " echo = client.echo("11111");"

client code:

`public class OriginThriftClient {

 public static void main(String[] args) {

    TTransport transport = null;
    try {
        transport = new TFramedTransport(new TSocket("localhost", 9001));
        transport.open();

        TProtocol protocol = new TBinaryProtocol(transport);
        Echo.Iface client = new Echo.Client(protocol);
        String echo = client.echo("abc");
        System.out.println(echo);

         echo = client.echo("11111");
        System.out.println(echo);

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        transport.close();
        ServiceBootstrap.clearGlobalResource();
    }
}

}`

server code:
com.meituan.dorado.testserver.ServerMain in module dorado-test-server

Too many ShutDownHook thread

There would be many ShutDownHook threads in an application when it provides or consumes many services. I don't think It's necessary for such a lot of threads.

whale 问题,请教了:sp_write_tmembuf_判断不是独有后,为啥再重新生成一个?

  void AppendWriteBuf(const uint8_t *buf, uint32_t len) {
    muduo::MutexLockGuard lock(*sp_mutexlock_write_buf);
    if (!(sp_write_tmembuf_.unique())) {
      uint8_t *p_buf = 0;
      uint32_t u32_len = 0;

      sp_write_tmembuf_->getBuffer(&p_buf, &u32_len);
      sp_write_tmembuf_ =
          boost::make_shared<TMemoryBuffer>(p_buf,
                                            u32_len,
                                            TMemoryBuffer::COPY);
    }

    sp_write_tmembuf_->write(buf, len);
  }

sp_write_tmembuf_.unique

此处判断sp_write_tmembuf_是否,多个shared_ptr指向,如果被shared_ptr指向,则重新 boost::make_shared ,,why?

NetUtil#isPortInUse方法

第一次运行dorado.demo.simple.ThriftProvider时,报错提示No available port
我将NetUtil类的isPortInUse方法中try/catch的返回值互调后才能够正常运行,请问这是怎么回事?

whale编译问题

[ 3%] Building CXX object cthrift/CMakeFiles/cthrift_dynamic.dir/cthrift_svr.cc.o
In file included from /home/work/octo/whale/cthrift/cthrift_tbinary_protocol.h:317:0,
from /home/work/octo/whale/cthrift/cthrift_client.h:26,
from /home/work/octo/whale/cthrift/cthrift_svr.h:26,
from /home/work/octo/whale/cthrift/cthrift_svr.cc:22:
/home/work/octo/whale/cthrift/cthrift_tbinary_protocol.tcc: In member function 'uint32_t meituan_cthrift::CthriftTBinaryProtocolT<Transport_>::writeI64(int64_t)':
/home/work/octo/whale/cthrift/cthrift_tbinary_protocol.tcc:310:49: error: there are no arguments to 'htonll' that depend on a template parameter, so a declaration of 'htonll' must be available [-fpermissive]
int64_t net = static_cast<int64_t>( htonll(i64));
^
/home/work/octo/whale/cthrift/cthrift_tbinary_protocol.tcc:310:49: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/home/work/octo/whale/cthrift/cthrift_tbinary_protocol.tcc: In member function 'uint32_t meituan_cthrift::CthriftTBinaryProtocolT<Transport_>::writeDouble(double)':
/home/work/octo/whale/cthrift/cthrift_tbinary_protocol.tcc:321:21: error: there are no arguments to 'htonll' that depend on a template parameter, so a declaration of 'htonll' must be available [-fpermissive]
bits = htonll(bits);
^
/home/work/octo/whale/cthrift/cthrift_tbinary_protocol.tcc: In instantiation of 'uint32_t meituan_cthrift::CthriftTBinaryProtocolT<Transport_>::writeI64(int64_t) [with Transport_ = apache::thrift::transport::TTransport; uint32_t = unsigned int; int64_t = long int]':
/usr/local/include/thrift/protocol/TVirtualProtocol.h:409:55: required from 'uint32_t apache::thrift::protocol::TVirtualProtocol<Protocol_, Super_>::writeI64_virt(int64_t) [with Protocol_ = meituan_cthrift::CthriftTBinaryProtocolTapache::thrift::transport::TTransport; Super_ = apache::thrift::protocol::TProtocolDefaults; uint32_t = unsigned int; int64_t = long int]'
/home/work/octo/whale/cthrift/cthrift_svr.cc:692:1: required from here
/home/work/octo/whale/cthrift/cthrift_tbinary_protocol.tcc:310:49: error: 'htonll' was not declared in this scope
int64_t net = static_cast<int64_t>( htonll(i64));
^
/home/work/octo/whale/cthrift/cthrift_tbinary_protocol.tcc: In instantiation of 'uint32_t meituan_cthrift::CthriftTBinaryProtocolT<Transport_>::writeDouble(double) [with Transport_ = apache::thrift::transport::TTransport; uint32_t = unsigned int]':
/usr/local/include/thrift/protocol/TVirtualProtocol.h:413:58: required from 'uint32_t apache::thrift::protocol::TVirtualProtocol<Protocol_, Super_>::writeDouble_virt(double) [with Protocol_ = meituan_cthrift::CthriftTBinaryProtocolTapache::thrift::transport::TTransport; Super_ = apache::thrift::protocol::TProtocolDefaults; uint32_t = unsigned int]'
/home/work/octo/whale/cthrift/cthrift_svr.cc:692:1: required from here
/home/work/octo/whale/cthrift/cthrift_tbinary_protocol.tcc:321:21: error: 'htonll' was not declared in this scope
bits = htonll(bits);

客户端频繁创建销毁Channel

image

大量出现这个提示
image
应该是connectStatusCheck这个方法中的定时schedule在操作
但是没有抛出降级异常的话 在执行后应该会执行以下 stopConnectStatusCheck()方法 但是实际情况似乎该方法没有触发停止
image

Run ThriftConsumer main failed in Debug mode

Console ouput:

2019/03/13 16:33:39.488 main [WARN] TraceFactory (TraceFactory.java:40) No impl of InvokeTrace, will not do performance trace.
2019/03/13 16:33:39.713 main [INFO] AbstractHttpServer (AbstractHttpServer.java:90) Start HttpServer bind 0.0.0.0/0.0.0.0:5081
2019/03/13 16:33:39.856 main [INFO] AbstractClient (AbstractClient.java:147) Succeed connect to server /127.0.0.1:9001 from com.meituan.dorado.transport.netty.NettyClient, channel is [id: 0x883b27b9, L:/127.0.0.1:56767 - R:/127.0.0.1:9001]
Hello OCTO
2019/03/13 16:33:40.047 NettyClientWorkerGroup-4-1 [ERROR] NettyChannel (NettyChannel.java:62) Failed to send message[Request(com.meituan.dorado.demo.thrift.api.HelloService)] to /127.0.0.1:9001.
io.netty.handler.codec.EncoderException: com.meituan.dorado.common.exception.ProtocolException: Thrift serialize request: classcom.meituan.dorado.demo.thrift.api.HelloService$toString_args load failed.
at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:125) ~[netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.handler.codec.ByteToMessageCodec.write(ByteToMessageCodec.java:108) ~[netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) [netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) [netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:816) [netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723) [netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.channel.ChannelDuplexHandler.write(ChannelDuplexHandler.java:106) [netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) [netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) [netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.channel.AbstractChannelHandlerContext.access$1900(AbstractChannelHandlerContext.java:38) [netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.write(AbstractChannelHandlerContext.java:1081) [netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:1128) [netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:1070) [netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:163) [netty-common-4.1.25.Final.jar:4.1.25.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java) [netty-common-4.1.25.Final.jar:4.1.25.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) [netty-common-4.1.25.Final.jar:4.1.25.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:465) [netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884) [netty-common-4.1.25.Final.jar:4.1.25.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.25.Final.jar:4.1.25.Final]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]
Caused by: com.meituan.dorado.common.exception.ProtocolException: Thrift serialize request: classcom.meituan.dorado.demo.thrift.api.HelloService$toString_args load failed.
at com.meituan.dorado.serialize.thrift.ThriftIDLSerializer.getClazzInstance(ThriftIDLSerializer.java:360) ~[classes/:?]
at com.meituan.dorado.serialize.thrift.ThriftIDLSerializer.doSerializeRequest(ThriftIDLSerializer.java:238) ~[classes/:?]
at com.meituan.dorado.serialize.thrift.ThriftIDLSerializer.serialize(ThriftIDLSerializer.java:223) ~[classes/:?]
at com.meituan.dorado.serialize.thrift.ThriftCodecSerializer.encodeThrift(ThriftCodecSerializer.java:114) ~[classes/:?]
at com.meituan.dorado.codec.octo.OctoCodec.encodeThrift(OctoCodec.java:403) ~[classes/:?]
at com.meituan.dorado.codec.octo.OctoCodec.encode(OctoCodec.java:82) ~[classes/:?]
at com.meituan.dorado.transport.netty.NettyCodec.encode(NettyCodec.java:65) ~[classes/:?]
at io.netty.handler.codec.ByteToMessageCodec$Encoder.encode(ByteToMessageCodec.java:172) ~[netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-all-4.1.25.Final.jar:4.1.25.Final]
... 19 more
Caused by: java.lang.ClassNotFoundException: com.meituan.dorado.demo.thrift.api.HelloService$toString_args
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_151]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_151]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) ~[?:1.8.0_151]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_151]
at java.lang.Class.forName0(Native Method) ~[?:1.8.0_151]
at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_151]
at org.apache.commons.lang3.ClassUtils.getClass(ClassUtils.java:993) ~[commons-lang3-3.7.jar:3.7]
at org.apache.commons.lang3.ClassUtils.getClass(ClassUtils.java:1027) ~[commons-lang3-3.7.jar:3.7]
at com.meituan.dorado.common.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:26) ~[classes/:?]
at com.meituan.dorado.common.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:30) ~[classes/:?]
at com.meituan.dorado.serialize.thrift.ThriftIDLSerializer.getClazzInstance(ThriftIDLSerializer.java:357) ~[classes/:?]
at com.meituan.dorado.serialize.thrift.ThriftIDLSerializer.doSerializeRequest(ThriftIDLSerializer.java:238) ~[classes/:?]
at com.meituan.dorado.serialize.thrift.ThriftIDLSerializer.serialize(ThriftIDLSerializer.java:223) ~[classes/:?]
at com.meituan.dorado.serialize.thrift.ThriftCodecSerializer.encodeThrift(ThriftCodecSerializer.java:114) ~[classes/:?]
at com.meituan.dorado.codec.octo.OctoCodec.encodeThrift(OctoCodec.java:403) ~[classes/:?]
at com.meituan.dorado.codec.octo.OctoCodec.encode(OctoCodec.java:82) ~[classes/:?]
at com.meituan.dorado.transport.netty.NettyCodec.encode(NettyCodec.java:65) ~[classes/:?]
at io.netty.handler.codec.ByteToMessageCodec$Encoder.encode(ByteToMessageCodec.java:172) ~[netty-all-4.1.25.Final.jar:4.1.25.Final]
at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-all-4.1.25.Final.jar:4.1.25.Final]
... 19 more
2019/03/13 16:33:51.599 main [INFO] AbstractClient (AbstractClient.java:188) Closing com.meituan.dorado.transport.netty.NettyClient connect to server localhost/127.0.0.1:9001
2019/03/13 16:33:51.600 main [INFO] AbstractClient (AbstractClient.java:161) Disconnecting to server localhost/127.0.0.1:9001
2019/03/13 16:33:51.600 main [INFO] NettyChannel (NettyChannel.java:82) Closing netty channel [id: 0x883b27b9, L:/127.0.0.1:56767 - R:/127.0.0.1:9001]
2019/03/13 16:33:51.603 main [INFO] AbstractHttpServer (AbstractHttpServer.java:56) Closing HttpServer bind 0.0.0.0/0.0.0.0:5081
2019/03/13 16:33:51.604 main [INFO] ServiceInvocationRepository (ServiceInvocationRepository.java:118) Stop HashedWheelTimer
Disconnected from the target VM, address: '127.0.0.1:56762', transport: 'socket'

Process finished with exit code 0

服务端无法支持高并发,rpc超时率比较高

服务端代码用C++写,TNonblockingServer 业务依然是单线程处理,请问你们那边服务端C++程序如何做到支持单链接,并行处理请求。原因是客户端的源码是单channel。
服务端源码如下
std::shared_ptr handler(new GeekRecallApiThriftHandler(conf));
std::shared_ptr processor(new GeekRecallApiThriftProcessor(handler));
// std::shared_ptr serverTransport(new TServerSocket(port));
std::shared_ptr serverTransport(new TNonblockingServerSocket(port));
std::shared_ptr transportFactory(new TFramedTransportFactory());
std::shared_ptr protocolFactory(new TBinaryProtocolFactory());

    std::shared_ptr<ThreadManager> threadManager = ThreadManager::newSimpleThreadManager(10);
    std::shared_ptr<PosixThreadFactory> threadFactory = std::shared_ptr<PosixThreadFactory > (new PosixThreadFactory());
    threadManager->threadFactory(threadFactory);
    threadManager->start();

    boss_server = std::make_shared<TNonblockingServer>(processor, protocolFactory, serverTransport, threadManager);

Consumer programs cannot exit automatically

I found that this is not a daemon thread. When I change to a daemon thread, I can automatically exit.

private static final NioEventLoopGroup WORKER_GROUP = new NioEventLoopGroup(Constants.DEFAULT_IO_WORKER_THREAD_COUNT, new DefaultThreadFactory("DoradoClientNettyWorkerGroup"));

hashedWheelTimer = new HashedWheelTimer(new DefaultThreadFactory("DoradoTimeoutScheduler"),

Direct output error?

Double-Checked Locking

if (zkClient == null) {
synchronized (ZookeeperManager.class) {
zkClient = zkClients.get(address);
if (zkClient == null) {
zkClient = new ZookeeperClient(address);
zkClients.putIfAbsent(address, zkClient);

Double-Checked Locking is widely cited and used as an efficient method for implementing lazy initialization in a multithreaded environment.
Unfortunately, it will not work reliably in a platform independent way when implemented in Java, without additional synchronization.
declares the zkClient field volatile offers a much more elegant solution

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.