Thanks!
The scenario for hbase region server down only happens why I perform query, 
especially which needs scan lots of data.
Is there any way to tune certain parameter of hbase to avoid this issue?

-----Original Message-----
From: ShaoFeng Shi [mailto:shaofeng...@apache.org] 
Sent: Thursday, June 23, 2016 10:07 AM
To: dev@kylin.apache.org
Cc: u...@kylin.apache.org; mahong...@apache.org
Subject: Re: Timeout visiting cube

Jiao,

From your log it indicates some region servers for that HTable were down so 
Kylin couldn't connect, please have a HBase healthy check:

Caused by: java.io.IOException: Call to martinitest002/10.0.0.6:16020 failed on 
local exception:
org.apache.hadoop.hbase.ipc.CallTimeoutException: Call id=155399, 
waitTime=90002, operationTimeout=90000 expired.
at
org.apache.hadoop.hbase.ipc.RpcClientImpl.wrapException(RpcClientImpl.java:1262)
at org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1230)
at
org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:213)
at
org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImplementation.callBlockingMethod(AbstractRpcClient.java:287)
at
org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.execService(ClientProtos.java:32675)
at
org.apache.hadoop.hbase.protobuf.ProtobufUtil.execService(ProtobufUtil.java:1618)
at
org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel$1.call(RegionCoprocessorRpcChannel.java:92)
at
org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel$1.call(RegionCoprocessorRpcChannel.java:89)
at
org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:126)
... 10 more
Caused by: org.apache.hadoop.hbase.ipc.CallTimeoutException: Call id=155399, 
waitTime=90002, operation



2016-06-22 11:59 GMT+08:00 ShaoFeng Shi <shaofeng...@apache.org>:

> We doubt there is another HBase side error before throwing the timeout 
> error, which can be the root cause. As HBase client will retry several 
> times, and each time has an timeout, so that error was output to 
> kylin.log in several minutes later (0 - 20 minutes are possible). 
> Please take a check to see whether it is true. Or if you can share the 
> full kylin.log to somewhere like gist, that would be great;
>
>
>
> 2016-06-22 9:48 GMT+08:00 Jiaojiao Li <jia...@microsoft.com>:
>
>> In my case, related information is like this.
>> Kylin version: 1.5.2
>> HBase version: HBase 0.98.4.2.2.9.0-3393 Cube size: 13.16GB Source 
>> records: 85,794,927 Dimension number: 20  (several joint groups) 
>> Measure type: bigint SQL query: select count(distinct userid) from 
>> XXX LIMIT 50000
>>
>> If you need more information please let me know.
>>
>> -----Original Message-----
>> From: ShaoFeng Shi [mailto:shaofeng...@apache.org]
>> Sent: Tuesday, June 21, 2016 10:51 PM
>> To: dev@kylin.apache.org; u...@kylin.apache.org
>> Cc: mahong...@apache.org
>> Subject: Re: Timeout visiting cube
>>
>> Hi all,
>>
>> Recently we noticed a couple of users are facing this timeout error, 
>> even with some tiny cubes; We will try to re-produce it in our side 
>> first; If you can provide more information about your case (like 
>> hbase version, cube size, dimension nubmer,  measure type, SQL query, etc), 
>> that would be great!
>>
>> 2016-06-20 9:52 GMT+08:00 Jiaojiao Li <jia...@microsoft.com>:
>>
>> > Any update for this issue or can you share your insight for it?
>> > Increase the value of *kylin.query.cube.visit.timeout.times* 
>> > doesn't work for me.
>> >
>> > Thanks!
>> >
>> > -----Original Message-----
>> > From: Jiaojiao Li
>> > Sent: Thursday, June 16, 2016 5:15 PM
>> > To: dev <dev@kylin.apache.org>
>> > Cc: 'mahong...@apache.org' <mahong...@apache.org>
>> > Subject: RE: Timeout visiting cube
>> >
>> > Thank you for taking time to investigation.
>> > Today I rerun the query and all the log are as follows.
>> > Kylin_query.log:
>> > root@MartiniTest000:/home/martini/kylin/logs# cat kylin_query.log
>> > 2016-06-16 09:04:10,795 DEBUG [http-bio-7070-exec-2]
>> > service.QueryService:291 : getting table metas
>> > 2016-06-16 09:04:10,796 DEBUG [http-bio-7070-exec-2]
>> > service.QueryService:309 : getting column metas
>> > 2016-06-16 09:04:10,804 DEBUG [http-bio-7070-exec-2]
>> > service.QueryService:323 : done column metas
>> > 2016-06-16 09:04:25,880 DEBUG [http-bio-7070-exec-10]
>> > service.QueryService:291 : getting table metas
>> > 2016-06-16 09:04:25,882 DEBUG [http-bio-7070-exec-10]
>> > service.QueryService:309 : getting column metas
>> > 2016-06-16 09:04:25,889 DEBUG [http-bio-7070-exec-10]
>> > service.QueryService:323 : done column metas
>> > 2016-06-16 09:04:34,045 INFO  [http-bio-7070-exec-10]
>> > controller.QueryController:174 : Using project: CortanaTest
>> > 2016-06-16 09:04:34,046 INFO  [http-bio-7070-exec-10]
>> > controller.QueryController:175 : The original query:  select 
>> > count(distinct
>> > userid) from cortanauu
>> > 2016-06-16 09:04:34,047 INFO  [http-bio-7070-exec-10]
>> > service.QueryService:266 : The corrected query: select 
>> > count(distinct
>> > userid) from cortanauu LIMIT 50000
>> > 2016-06-16 09:04:34,104 INFO  [http-bio-7070-exec-10]
>> > routing.QueryRouter:48 : The project manager's reference is 
>> > org.apache.kylin.metadata.project.ProjectManager@419808ad
>> > 2016-06-16 09:04:34,105 INFO  [http-bio-7070-exec-10]
>> > routing.QueryRouter:60 : Find candidates by table 
>> > CORTANAUU.CORTANAUU and project=CORTANATEST :
>> > org.apache.kylin.query.routing.Candidate@f3ac47f
>> > 2016-06-16 09:04:34,105 INFO  [http-bio-7070-exec-10]
>> > routing.QueryRouter:49 : Applying rule: class 
>> > org.apache.kylin.query.routing.rules.RemoveUncapableRealizationsRul
>> > e, realizations before: [CortanaUUTest_clone(CUBE)], realizations 
>> > after:
>> > [CortanaUUTest_clone(CUBE)]
>> > 2016-06-16 09:04:34,105 INFO  [http-bio-7070-exec-10]
>> > routing.QueryRouter:49 : Applying rule: class 
>> > org.apache.kylin.query.routing.rules.RealizationSortRule, 
>> > realizations
>> > before: [CortanaUUTest_clone(CUBE)], realizations after:
>> > [CortanaUUTest_clone(CUBE)]
>> > 2016-06-16 09:04:34,106 INFO  [http-bio-7070-exec-10]
>> > routing.QueryRouter:85 : Adjust DimensionAsMeasure for FunctionDesc 
>> > [expression=COUNT_DISTINCT, parameter=ParameterDesc [type=column, 
>> > value=USERID, nextParam=null], returnType=null]
>> > 2016-06-16 09:04:34,106 INFO  [http-bio-7070-exec-10]
>> > routing.QueryRouter:72 : The realizations remaining:
>> > [CortanaUUTest_clone(CUBE)] And the final chosen one is the first 
>> > one
>> > 2016-06-16 09:04:34,152 DEBUG [http-bio-7070-exec-10]
>> > enumerator.OLAPEnumerator:107 : query storage...
>> > 2016-06-16 09:04:34,405 DEBUG [http-bio-7070-exec-10]
>> > enumerator.OLAPEnumerator:127 : return TupleIterator...
>> > 2016-06-16 09:06:46,286 ERROR [http-bio-7070-exec-10]
>> > controller.QueryController:209 : Exception when execute sql
>> > java.sql.SQLException: Error while executing SQL "select 
>> > count(distinct
>> > userid) from cortanauu LIMIT 50000": Timeout visiting cube!
>> >         at
>> > org.apache.calcite.avatica.Helper.createException(Helper.java:56)
>> >         at
>> > org.apache.calcite.avatica.Helper.createException(Helper.java:41)
>> >         at
>> >
>> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaSt
>> atement.java:143)
>> >         at
>> >
>> org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaState
>> ment.java:186)
>> >         at
>> >
>> org.apache.kylin.rest.service.QueryService.execute(QueryService.java:
>> 361)
>> >         at
>> >
>> org.apache.kylin.rest.service.QueryService.queryWithSqlMassage(QueryS
>> ervice.java:273)
>> >         at
>> > org.apache.kylin.rest.service.QueryService.query(QueryService.java:121)
>> >         at
>> >
>> org.apache.kylin.rest.service.QueryService$$FastClassByCGLIB$$4957273
>> f.invoke(<generated>)
>> >         at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
>> >         at
>> >
>> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterc
>> eptor.intercept(Cglib2AopProxy.java:618)
>> >         at
>> >
>> org.apache.kylin.rest.service.QueryService$$EnhancerByCGLIB$$72e265c1
>> .query(<generated>)
>> >         at
>> >
>> org.apache.kylin.rest.controller.QueryController.doQueryWithCache(Que
>> ryController.java:192)
>> >         at
>> >
>> org.apache.kylin.rest.controller.QueryController.query(QueryControlle
>> r.java:94)
>> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> >         at
>> >
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
>> java:57)
>> >         at
>> >
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
>> sorImpl.java:43)
>> >         at java.lang.reflect.Method.invoke(Method.java:606)
>> >         at
>> >
>> org.springframework.web.method.support.InvocableHandlerMethod.invoke(
>> InvocableHandlerMethod.java:213)
>> >         at
>> >
>> org.springframework.web.method.support.InvocableHandlerMethod.invokeF
>> orRequest(InvocableHandlerMethod.java:126)
>> >         at
>> >
>> org.springframework.web.servlet.mvc.method.annotation.ServletInvocabl
>> eHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
>> >         at
>> >
>> org.springframework.web.servlet.mvc.method.annotation.RequestMappingH
>> andlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:6
>> 17)
>> >         at
>> >
>> org.springframework.web.servlet.mvc.method.annotation.RequestMappingH
>> andlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
>> >         at
>> >
>> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapt
>> er.handle(AbstractHandlerMethodAdapter.java:80)
>> >         at
>> >
>> org.springframework.web.servlet.DispatcherServlet.doDispatch(Dispatch
>> erServlet.java:923)
>> >         at
>> >
>> org.springframework.web.servlet.DispatcherServlet.doService(Dispatche
>> rServlet.java:852)
>> >         at
>> >
>> org.springframework.web.servlet.FrameworkServlet.processRequest(Frame
>> workServlet.java:882)
>> >         at
>> >
>> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServ
>> let.java:789)
>> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
>> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>> >         at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
>> icationFilterChain.java:303)
>> >         at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
>> ilterChain.java:208)
>> >         at
>> > org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>> >         at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
>> icationFilterChain.java:241)
>> >         at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
>> ilterChain.java:208)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
>> doFilter(FilterChainProxy.java:330)
>> >         at
>> >
>> org.springframework.security.web.access.intercept.FilterSecurityInter
>> ceptor.invoke(FilterSecurityInterceptor.java:118)
>> >         at
>> >
>> org.springframework.security.web.access.intercept.FilterSecurityInter
>> ceptor.doFilter(FilterSecurityInterceptor.java:84)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
>> doFilter(FilterChainProxy.java:342)
>> >         at
>> >
>> org.springframework.security.web.access.ExceptionTranslationFilter.do
>> Filter(ExceptionTranslationFilter.java:113)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
>> doFilter(FilterChainProxy.java:342)
>> >         at
>> >
>> org.springframework.security.web.session.SessionManagementFilter.doFi
>> lter(SessionManagementFilter.java:103)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
>> doFilter(FilterChainProxy.java:342)
>> >         at
>> >
>> org.springframework.security.web.authentication.AnonymousAuthenticati
>> onFilter.doFilter(AnonymousAuthenticationFilter.java:113)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
>> doFilter(FilterChainProxy.java:342)
>> >         at
>> >
>> org.springframework.security.web.servletapi.SecurityContextHolderAwar
>> eRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:
>> 54)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
>> doFilter(FilterChainProxy.java:342)
>> >         at
>> >
>> org.springframework.security.web.savedrequest.RequestCacheAwareFilter
>> .doFilter(RequestCacheAwareFilter.java:45)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
>> doFilter(FilterChainProxy.java:342)
>> >         at
>> >
>> org.springframework.security.web.authentication.www.BasicAuthenticati
>> onFilter.doFilter(BasicAuthenticationFilter.java:201)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
>> doFilter(FilterChainProxy.java:342)
>> >         at
>> >
>> org.springframework.security.web.authentication.ui.DefaultLoginPageGe
>> neratingFilter.doFilter(DefaultLoginPageGeneratingFilter.java:91)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
>> doFilter(FilterChainProxy.java:342)
>> >         at
>> >
>> org.springframework.security.web.authentication.AbstractAuthenticatio
>> nProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.jav
>> a:183)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
>> doFilter(FilterChainProxy.java:342)
>> >         at
>> >
>> org.springframework.security.web.authentication.logout.LogoutFilter.d
>> oFilter(LogoutFilter.java:105)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
>> doFilter(FilterChainProxy.java:342)
>> >         at
>> >
>> org.springframework.security.web.context.SecurityContextPersistenceFi
>> lter.doFilter(SecurityContextPersistenceFilter.java:87)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.
>> doFilter(FilterChainProxy.java:342)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy.doFilterInternal(Fi
>> lterChainProxy.java:192)
>> >         at
>> >
>> org.springframework.security.web.FilterChainProxy.doFilter(FilterChai
>> nProxy.java:160)
>> >         at
>> >
>> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(D
>> elegatingFilterProxy.java:346)
>> >         at
>> >
>> org.springframework.web.filter.DelegatingFilterProxy.doFilter(Delegat
>> ingFilterProxy.java:259)
>> >         at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
>> icationFilterChain.java:241)
>> >         at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
>> ilterChain.java:208)
>> >         at
>> > com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:195)
>> >         at
>> > com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:266)
>> >         at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
>> icationFilterChain.java:241)
>> >         at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
>> ilterChain.java:208)
>> >         at
>> >
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
>> alve.java:220)
>> >         at
>> >
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
>> alve.java:122)
>> >         at
>> >
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
>> torBase.java:504)
>> >         at
>> >
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
>> ava:170)
>> >         at
>> >
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
>> ava:103)
>> >         at
>> >
>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
>> 950)
>> >         at
>> >
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
>> ve.java:116)
>> >         at
>> >
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
>> a:421)
>> >         at
>> >
>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp
>> 11Processor.java:1074)
>> >         at
>> >
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
>> AbstractProtocol.java:611)
>> >         at
>> >
>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoin
>> t.java:316)
>> >         at
>> >
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
>> java:1145)
>> >         at
>> >
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
>> .java:615)
>> >         at
>> >
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskTh
>> read.java:61)
>> >         at java.lang.Thread.run(Thread.java:745)
>> > Caused by: java.lang.RuntimeException: Timeout visiting cube!
>> >         at
>> >
>> org.apache.kylin.storage.hbase.cube.v2.CubeHBaseEndpointRPC$ExpectedS
>> izeIterator.next(CubeHBaseEndpointRPC.java:127)
>> >         at
>> >
>> org.apache.kylin.storage.hbase.cube.v2.CubeHBaseEndpointRPC$ExpectedS
>> izeIterator.next(CubeHBaseEndpointRPC.java:81)
>> >         at
>> >
>> com.google.common.collect.TransformedIterator.next(TransformedIterato
>> r.java:48)
>> >         at
>> > com.google.common.collect.Iterators$6.hasNext(Iterators.java:583)
>> >         at
>> >
>> org.apache.kylin.storage.hbase.cube.v2.SequentialCubeTupleIterator.ha
>> sNext(SequentialCubeTupleIterator.java:96)
>> >         at
>> >
>> org.apache.kylin.query.enumerator.OLAPEnumerator.moveNext(OLAPEnumera
>> tor.java:74)
>> >         at Baz$1$1.moveNext(Unknown Source)
>> >         at
>> >
>> org.apache.calcite.linq4j.EnumerableDefaults.aggregate(EnumerableDefa
>> ults.java:112)
>> >         at
>> >
>> org.apache.calcite.linq4j.DefaultEnumerable.aggregate(DefaultEnumerab
>> le.java:107)
>> >         at Baz.bind(Unknown Source)
>> >         at
>> >
>> org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(Ca
>> lcitePrepare.java:326)
>> >         at
>> >
>> org.apache.calcite.jdbc.CalciteConnectionImpl.enumerable(CalciteConne
>> ctionImpl.java:281)
>> >         at
>> >
>> org.apache.calcite.jdbc.CalciteMetaImpl._createIterable(CalciteMetaIm
>> pl.java:545)
>> >         at
>> >
>> org.apache.calcite.jdbc.CalciteMetaImpl.createIterable(CalciteMetaImp
>> l.java:536)
>> >         at
>> >
>> org.apache.calcite.avatica.AvaticaResultSet.execute(AvaticaResultSet.
>> java:187)
>> >         at
>> >
>> org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.jav
>> a:65)
>> >         at
>> >
>> org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.jav
>> a:44)
>> >         at
>> >
>> org.apache.calcite.avatica.AvaticaConnection$1.execute(AvaticaConnect
>> ion.java:566)
>> >         at
>> >
>> org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMeta
>> Impl.java:578)
>> >         at
>> >
>> org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInterna
>> l(AvaticaConnection.java:571)
>> >         at
>> >
>> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaSt
>> atement.java:135)
>> >         ... 80 more
>> > 2016-06-16 09:06:46,289 INFO  [http-bio-7070-exec-10]
>> > service.QueryService:250 :
>> > ==========================[QUERY]===============================
>> > SQL: select count(distinct userid) from cortanauu
>> > User: ADMIN
>> > Success: false
>> > Duration: 0.0
>> > Project: CortanaTest
>> > Realization Names: [CortanaUUTest_clone] Cuboid Ids: [1048062] 
>> > Total scan
>> > count: 0 Result row count: 0 Accept Partial: true Is Partial Result:
>> > false Hit Exception Cache: false Storage cache used: false
>> > Message: Error while executing SQL "select count(distinct userid) 
>> > from cortanauu LIMIT 50000": Timeout visiting cube!
>> > ==========================[QUERY]===============================
>> >
>> >
>> >
>> > -----Original Message-----
>> > From: hongbin ma [mailto:mahong...@apache.org]
>> > Sent: Wednesday, June 15, 2016 10:09 PM
>> > To: dev <dev@kylin.apache.org>
>> > Subject: Re: Timeout visiting cube
>> >
>> > ​actually, can you please attach latest 2 minutes' log before
>> > 2016-06-15 02:18:22,741?
>> > it's still incomplete for our analysis
>> >
>> >
>> >
>> >
>> > --
>> > Regards,
>> >
>> > *Bin Mahone | 马洪宾*
>> > Apache Kylin:
>> > https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fkylin.
>> > io&data=01%7c01%7cjiaoli%40064d.mgd.microsoft.com%7ce53a04299632406
>> > e33 
>> > 4208d395269be8%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=vpTxGJM
>> > sJQ 7CoMHsEjHWBxaRVgQWfLVp6mcuFmlqzzI%3d
>> > Github: https://github.com/binmahone
>> >
>>
>>
>>
>> --
>> Best regards,
>>
>> Shaofeng Shi
>>
>
>
>
> --
> Best regards,
>
> Shaofeng Shi
>
>


--
Best regards,

Shaofeng Shi

Reply via email to