meituan-dianping / octo-rpc Goto Github PK
View Code? Open in Web Editor NEWOCTO-RPC 是支持Java和C++的企业级通信框架,在RPC服务之上扩展了丰富的服务治理功能,为美团各业务线提供高效、统一的通信服务。
License: Apache License 2.0
OCTO-RPC 是支持Java和C++的企业级通信框架,在RPC服务之上扩展了丰富的服务治理功能,为美团各业务线提供高效、统一的通信服务。
License: Apache License 2.0
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用的哪个版本?
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);
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
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.
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?
第一次运行dorado.demo.simple.ThriftProvider时,报错提示No available port
我将NetUtil类的isPortInUse方法中try/catch的返回值互调后才能够正常运行,请问这是怎么回事?
如题,没有注释,啃源码太难了。。
[ 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);
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
The program can potentially fail to release a system resource.
服务端代码用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);
I found that this is not a daemon thread. When I change to a daemon thread, I can automatically exit.
Direct output error?
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
20220422 03:39:21.680601Z 36690 FATAL EventLoop::abortNotInLoopThread - EventLoop 0x7FFF527C7268 was created in threadId_ = 24, current thread id = 36690 - EventLoop.cc:287
这部分代码,loop报错
void CthriftSvr::serve() {
if (g_cthrift_config.server_register_) {
RegSvr();
}
event_loop_.loop();
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.