├── .gitignore ├── README ├── README.md ├── admin ├── doris.admin.bundle │ └── war │ │ ├── pom.xml │ │ └── src │ │ ├── descriptors │ │ └── web │ │ │ └── jetty-web.xml │ │ └── main │ │ └── webapp │ │ ├── META-INF │ │ └── autoconf │ │ │ ├── auto-config.xml │ │ │ ├── common │ │ │ └── resources.xml.vm │ │ │ ├── log4j.xml.vm │ │ │ └── web.xml.vm │ │ ├── WEB-INF │ │ ├── common │ │ │ ├── pipeline-exception.xml │ │ │ ├── pipeline.xml │ │ │ ├── uris.xml │ │ │ ├── webx-component-and-root.xml │ │ │ └── webx-component.xml │ │ ├── config │ │ │ └── form.xml │ │ ├── user │ │ │ └── form.xml │ │ ├── web.xml │ │ ├── webx-configer.xml │ │ ├── webx-home.xml │ │ ├── webx-monitor.xml │ │ ├── webx-user.xml │ │ └── webx.xml │ │ ├── css │ │ ├── common.css │ │ ├── doris.css │ │ └── skin.css │ │ ├── images │ │ ├── button_hover.png │ │ ├── button_normal.png │ │ ├── exit.png │ │ ├── head_bg.png │ │ ├── ico_add.png │ │ ├── ico_blue.png │ │ ├── ico_green.png │ │ ├── ico_grey.png │ │ ├── ico_orange.png │ │ ├── ico_purple.png │ │ ├── ico_red.png │ │ ├── login_bg.png │ │ ├── login_box.png │ │ ├── login_btn_hover.png │ │ ├── login_btn_normal.png │ │ ├── login_logo.png │ │ ├── login_shadow.png │ │ ├── logo.png │ │ ├── main_bg.png │ │ ├── nav_bg.png │ │ ├── nav_btn_bg2.png │ │ ├── nav_btn_bg22.png │ │ ├── nav_btn_bg3.png │ │ ├── nav_btn_bg33.png │ │ ├── nav_btn_bg44.png │ │ ├── nav_pass.png │ │ ├── nav_selected.png │ │ ├── pop_close.png │ │ ├── pop_left.png │ │ ├── pop_leftbottom.png │ │ ├── pop_lefttop_small.png │ │ ├── pop_midbottom.png │ │ ├── pop_midtop_small.png │ │ ├── pop_right.png │ │ ├── pop_rightbottom.png │ │ ├── pop_righttop_small.png │ │ ├── search_global_m.png │ │ └── table_title_bg.png │ │ └── js │ │ ├── doris.js │ │ ├── jquery-1.4.2.min.js │ │ ├── jquery.simplemodal-1.4.js │ │ ├── pop.js │ │ └── trcolor.js ├── doris.admin.core │ ├── abatorConfig1.xml │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── admin │ │ │ │ ├── core │ │ │ │ └── AdminServiceLocator.java │ │ │ │ ├── dao │ │ │ │ ├── ConfigInstanceDao.java │ │ │ │ ├── ConsistentReportDao.java │ │ │ │ ├── NamespaceDao.java │ │ │ │ ├── PhysicalNodeDao.java │ │ │ │ ├── PrefLogDao.java │ │ │ │ ├── SystemLogDao.java │ │ │ │ ├── UserDao.java │ │ │ │ ├── VirtualNodeDao.java │ │ │ │ └── impl │ │ │ │ │ ├── ConfigInstanceDaoImpl.java │ │ │ │ │ ├── ConsistentReportDaoImpl.java │ │ │ │ │ ├── NamespaceDaoImpl.java │ │ │ │ │ ├── PhysicalNodeDaoImpl.java │ │ │ │ │ ├── PrefLogDaoImpl.java │ │ │ │ │ ├── SystemLogDaoImpl.java │ │ │ │ │ ├── UserDaoImpl.java │ │ │ │ │ └── VirtualNodeDaoImpl.java │ │ │ │ ├── dataobject │ │ │ │ ├── ConsistentReportDO.java │ │ │ │ ├── NamespaceDO.java │ │ │ │ ├── PhysicalNodeDO.java │ │ │ │ ├── PrefLogDO.java │ │ │ │ ├── RouterConfigInstanceDO.java │ │ │ │ ├── SystemLogDO.java │ │ │ │ └── UserDO.java │ │ │ │ ├── monitor │ │ │ │ ├── DorisMonitorException.java │ │ │ │ ├── MonitorEnum.java │ │ │ │ └── SystemLogMonitor.java │ │ │ │ ├── scheduling │ │ │ │ └── ArchivePrefLogJob.java │ │ │ │ ├── service │ │ │ │ ├── AdminNodeService.java │ │ │ │ ├── AdminService.java │ │ │ │ ├── ConsistentReportService.java │ │ │ │ ├── LoginService.java │ │ │ │ ├── MonitorService.java │ │ │ │ ├── NamespaceService.java │ │ │ │ ├── NodeValidatorService.java │ │ │ │ ├── PropertiesService.java │ │ │ │ ├── RouteConfigService.java │ │ │ │ ├── SystemLogService.java │ │ │ │ ├── UserService.java │ │ │ │ ├── VirtualNodeService.java │ │ │ │ └── impl │ │ │ │ │ ├── AdminNodeServiceImp.java │ │ │ │ │ ├── AdminServiceImp.java │ │ │ │ │ ├── ConsistentReportServiceImpl.java │ │ │ │ │ ├── LoginServiceImpl.java │ │ │ │ │ ├── MonitorServiceImpl.java │ │ │ │ │ ├── NamespaceServiceImpl.java │ │ │ │ │ ├── PropertiesServiceImpl.java │ │ │ │ │ ├── RouteConfigServiceImpl.java │ │ │ │ │ ├── SystemLogServiceImpl.java │ │ │ │ │ ├── UserServiceImpl.java │ │ │ │ │ ├── ValueParseUtil.java │ │ │ │ │ └── VirtualNodeServiceImpl.java │ │ │ │ └── support │ │ │ │ ├── PrefQuery.java │ │ │ │ └── PrefStatObject.java │ │ └── resources │ │ │ ├── META-INF │ │ │ ├── autoconf │ │ │ │ ├── auto-config.xml │ │ │ │ ├── doris_admin_service.properties.vm │ │ │ │ ├── jdbc.properties.vm │ │ │ │ └── webconsole.properties.vm │ │ │ ├── ibatis │ │ │ │ ├── ConfigInstance.xml │ │ │ │ ├── ConsistentReport.xml │ │ │ │ ├── Namespace.xml │ │ │ │ ├── PhysicalNode.xml │ │ │ │ ├── PrefLog.xml │ │ │ │ ├── PrefLogAchived.xml │ │ │ │ ├── SystemLog.xml │ │ │ │ ├── User.xml │ │ │ │ ├── VirtualNode.xml │ │ │ │ └── sql-map-config.xml │ │ │ └── sql │ │ │ │ ├── doris-config-create-dabase.sql │ │ │ │ └── doris-config-create-schema.sql │ │ │ └── spring │ │ │ ├── doris_admin_dal.xml │ │ │ └── doris_service_context.xml │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── admin │ │ │ ├── core │ │ │ ├── PropertiesServiceTest.java │ │ │ └── ValueParseUtilTest.java │ │ │ └── service │ │ │ └── impl │ │ │ └── ConsistentReportServiceImplTest.java │ │ └── resources │ │ ├── doris_admin_service.properties │ │ ├── jdbc.properties │ │ └── log4j.xml ├── doris.admin.deploy │ ├── autoconf │ │ ├── auto-config.xml │ │ ├── env.vm │ │ ├── httpd.conf.vm │ │ ├── jboss-service.xml.vm │ │ ├── jetty-logging.xml.vm │ │ ├── jetty-start.ini.vm │ │ ├── jetty.xml.vm │ │ ├── mod-jk.conf.vm │ │ ├── mod-proxy.conf.vm │ │ ├── oracle-ds.xml.vm │ │ ├── tomcat-server.xml.vm │ │ └── virtualhost.conf.vm │ ├── conf │ │ └── mime.types │ ├── doris.antx.properties │ ├── htdocs │ │ └── robots.txt │ ├── jetty-conf │ │ ├── conf │ │ │ ├── jetty-policy.xml │ │ │ ├── jetty.conf │ │ │ └── webdefault.xml │ │ └── ext │ │ │ ├── jetty-server-extended.jar │ │ │ ├── log4j-1.2.12.jar │ │ │ ├── log4j.properties │ │ │ ├── slf4j-api-1.4.3.jar │ │ │ ├── slf4j-log4j12-1.4.3.jar │ │ │ ├── xercesImpl-2.9.1.jar │ │ │ ├── xml-apis-1.3.04.jar │ │ │ └── xml-resolver-1.2.jar │ ├── pom.xml │ ├── src │ │ └── assemble │ │ │ ├── dev.xml │ │ │ └── release.xml │ └── templates │ │ ├── common │ │ ├── layout │ │ │ └── default.vm │ │ ├── macros.vm │ │ ├── myMacros.vm │ │ └── screen │ │ │ ├── error.vm │ │ │ └── nodelist.vm │ │ ├── configer │ │ ├── control │ │ │ └── pagination.vm │ │ └── screen │ │ │ ├── consistentReportList.vm │ │ │ ├── namespaceAdd.vm │ │ │ ├── namespaceList.vm │ │ │ ├── newNodesPreview.vm │ │ │ ├── nodeAdd.vm │ │ │ ├── nodeEdit.vm │ │ │ ├── nodeManage.vm │ │ │ ├── systemLog.vm │ │ │ └── webconsole.vm │ │ ├── home │ │ └── screen │ │ │ ├── core │ │ │ └── ok.vm │ │ │ ├── index.vm │ │ │ ├── ok.vm │ │ │ ├── system │ │ │ └── systemLog.vm │ │ │ └── webconsole │ │ │ └── webconsole.vm │ │ ├── monitor │ │ └── screen │ │ │ ├── history.vm │ │ │ ├── historyWithNameSpace.vm │ │ │ ├── historyWithPhyId.vm │ │ │ └── realtime.vm │ │ └── user │ │ └── screen │ │ └── login.vm ├── doris.admin.service.common │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── admin │ │ │ └── service │ │ │ └── common │ │ │ ├── AdminServiceAction.java │ │ │ ├── AdminServiceException.java │ │ │ ├── Managerable.java │ │ │ ├── consistent │ │ │ ├── ConsistentReportAction.java │ │ │ ├── ConsistentReportTaskManager.java │ │ │ └── RingQueue.java │ │ │ ├── migrate │ │ │ ├── AdminMigrateStatusReportAction.java │ │ │ ├── AdminPostMigrateStatusReportAction.java │ │ │ ├── MigrateThread.java │ │ │ ├── command │ │ │ │ ├── CommandParser.java │ │ │ │ ├── MigrateCommand.java │ │ │ │ └── MigrateCommandResult.java │ │ │ ├── manager │ │ │ │ ├── MigrateManager.java │ │ │ │ └── PostMigrateStatusManager.java │ │ │ └── status │ │ │ │ ├── MigrateStatus.java │ │ │ │ ├── MigrateStatusCallback.java │ │ │ │ ├── MigrateStatusMonitorThread.java │ │ │ │ ├── MigrateStatusWatcher.java │ │ │ │ └── PostMigrateStatus.java │ │ │ ├── namespace │ │ │ └── AdminNameSpaceAction.java │ │ │ ├── node │ │ │ ├── NodeHelper.java │ │ │ ├── NodeReloadThread.java │ │ │ ├── NodesManager.java │ │ │ └── StoreNodeAction.java │ │ │ ├── route │ │ │ ├── DorisConfigServiceException.java │ │ │ ├── InvalidNodeException.java │ │ │ └── RouteConfigProcessor.java │ │ │ ├── user │ │ │ └── UserAction.java │ │ │ └── virtual │ │ │ └── VirtualNumberAction.java │ │ └── test │ │ └── java │ │ └── com │ │ └── alibaba │ │ └── doris │ │ ├── AppTest.java │ │ └── admin │ │ └── service │ │ └── common │ │ ├── NodeMork.java │ │ ├── ReportActionMork.java │ │ └── VirtualNumberActionTest.java ├── doris.admin.service.expansion │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── admin │ │ │ └── service │ │ │ └── expansion │ │ │ ├── migrate │ │ │ └── ExpansionMigrateThread.java │ │ │ └── processor │ │ │ └── ExpansionMigrateProcessor.java │ │ └── test │ │ └── java │ │ └── com │ │ └── alibaba │ │ └── doris │ │ └── admin │ │ └── service │ │ └── expansion │ │ ├── ExpansionDemo.java │ │ ├── NodeMork.java │ │ └── ReportActionMork.java ├── doris.admin.service.failover │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── admin │ │ │ └── service │ │ │ └── failover │ │ │ ├── check │ │ │ └── AdminNodeCheckAction.java │ │ │ ├── migrate │ │ │ ├── FailoverMigrateThread.java │ │ │ ├── ForeverFailoverMigrateThread.java │ │ │ └── TempFailoverMigrateThread.java │ │ │ ├── node │ │ │ └── check │ │ │ │ ├── NodeAdminStatusWrapper.java │ │ │ │ ├── NodeCheckManager.java │ │ │ │ ├── NodeCheckResult.java │ │ │ │ ├── NodeCheckService.java │ │ │ │ ├── NodeCheckTask.java │ │ │ │ ├── NodeCheckThread.java │ │ │ │ ├── NodeHealth.java │ │ │ │ └── NodeStatusManager.java │ │ │ └── processor │ │ │ ├── FailoverProcessor.java │ │ │ ├── ForeverFailoverProcessor.java │ │ │ └── TempFailoverProcessor.java │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── admin │ │ │ └── service │ │ │ └── failover │ │ │ ├── CheckTest.java │ │ │ ├── ForeverFailoverMigrateDemo.java │ │ │ ├── NodeConnectionMock.java │ │ │ ├── NodeConnectionNotEqualsMock.java │ │ │ ├── NodeConnectionPutFailMock.java │ │ │ ├── NodeMork.java │ │ │ ├── ReportActionMork.java │ │ │ └── TemFailoverMigrateDemo.java │ │ └── resources │ │ ├── spring │ │ ├── doris_admin_dal.xml │ │ ├── doris_service_context.xml │ │ └── jdbc.properties │ │ └── sqlmap-config.xml ├── doris.admin.service.main │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── admin │ │ │ └── service │ │ │ └── main │ │ │ ├── AdminServiceActionFactory.java │ │ │ ├── AdminServiceBootStrap.java │ │ │ ├── CommonConfigServiceAction.java │ │ │ ├── DorisAdminServlet.java │ │ │ └── DorisConfigUtil.java │ │ └── test │ │ └── java │ │ └── com │ │ └── alibaba │ │ └── doris │ │ └── admin │ │ └── web │ │ └── AppTest.java ├── doris.admin.service.monitor │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── admin │ │ │ └── service │ │ │ └── monitor │ │ │ └── PrefReportAction.java │ │ └── test │ │ ├── java │ │ └── Main.java │ │ └── resources │ │ ├── dbfit │ │ ├── tempfailover.then.wiki │ │ └── tempfailover.when.wiki │ │ ├── jtester.properties │ │ ├── spring │ │ ├── doris_admin_dal.xml │ │ ├── doris_service_context.xml │ │ └── jdbc.properties │ │ └── sqlmap-config.xml ├── doris.admin.service.routeconfig │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── admin │ │ │ └── service │ │ │ └── config │ │ │ └── service │ │ │ └── impl │ │ │ └── AdminRouteConfigAction.java │ │ └── test │ │ └── resources │ │ ├── dbfit │ │ ├── routeconfig.then.wiki │ │ └── routeconfig.when.wiki │ │ ├── jtester.properties │ │ ├── spring │ │ ├── doris_admin_dal.xml │ │ ├── doris_service_context.xml │ │ └── jdbc.properties │ │ └── sqlmap-config.xml ├── doris.admin.web.configer │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── admin │ │ │ │ └── web │ │ │ │ ├── configer │ │ │ │ ├── module │ │ │ │ │ ├── action │ │ │ │ │ │ ├── ConsistentReportAction.java │ │ │ │ │ │ ├── NamespaceAction.java │ │ │ │ │ │ ├── NodeAddAction.java │ │ │ │ │ │ ├── NodeManageAction.java │ │ │ │ │ │ ├── SystemLogAction.java │ │ │ │ │ │ └── WebConsoleAction.java │ │ │ │ │ ├── mock │ │ │ │ │ │ └── NodeAdminStatusWrapperMock.java │ │ │ │ │ └── screen │ │ │ │ │ │ ├── ConsistentReportList.java │ │ │ │ │ │ ├── NamespaceAdd.java │ │ │ │ │ │ ├── NamespaceList.java │ │ │ │ │ │ ├── NewNodesPreview.java │ │ │ │ │ │ ├── NodeAdd.java │ │ │ │ │ │ ├── NodeEdit.java │ │ │ │ │ │ └── NodeManage.java │ │ │ │ ├── support │ │ │ │ │ ├── NewAddedNodeVO.java │ │ │ │ │ ├── NodeForView.java │ │ │ │ │ ├── PageView.java │ │ │ │ │ ├── SequenceForView.java │ │ │ │ │ └── SystemLogView.java │ │ │ │ └── util │ │ │ │ │ ├── DateUtil.java │ │ │ │ │ ├── PageViewUtil.java │ │ │ │ │ ├── PhysicalNodeUtil.java │ │ │ │ │ ├── SequenceUtil.java │ │ │ │ │ └── WebConstant.java │ │ │ │ ├── monitor │ │ │ │ ├── module │ │ │ │ │ ├── action │ │ │ │ │ │ └── StatAction.java │ │ │ │ │ └── screen │ │ │ │ │ │ └── Realtime.java │ │ │ │ └── support │ │ │ │ │ ├── NodeViewForMonitor.java │ │ │ │ │ └── PrefMathTool.java │ │ │ │ └── user │ │ │ │ ├── DorisAuthValve.java │ │ │ │ └── module │ │ │ │ └── action │ │ │ │ └── LoginAction.java │ │ └── resources │ │ │ └── doris.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── alibaba │ │ └── doris │ │ └── admin │ │ ├── seb │ │ └── configer │ │ │ └── TestClient.java │ │ └── web │ │ └── configer │ │ └── util │ │ └── PhysicalNodeUtilTest.java └── pom.xml ├── common ├── doris.client │ ├── doris.client.api │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── client │ │ │ │ ├── AccessException.java │ │ │ │ ├── DataSourceException.java │ │ │ │ ├── DataSourceManager.java │ │ │ │ ├── DataSourceRouter.java │ │ │ │ ├── DataStore.java │ │ │ │ ├── DataStoreFactory.java │ │ │ │ ├── DorisClientException.java │ │ │ │ ├── DorisRouteVersionException.java │ │ │ │ ├── cn │ │ │ │ └── OperationDataConverter.java │ │ │ │ ├── config │ │ │ │ └── ConfigParser.java │ │ │ │ └── operation │ │ │ │ ├── AbstractOperationFactory.java │ │ │ │ ├── DataSourceOpFuture.java │ │ │ │ ├── ExecutionStatus.java │ │ │ │ ├── MetaOperation.java │ │ │ │ ├── Operation.java │ │ │ │ ├── OperationData.java │ │ │ │ ├── OperationDataSourceGroup.java │ │ │ │ ├── OperationFactory.java │ │ │ │ ├── PeerOperationException.java │ │ │ │ ├── failover │ │ │ │ ├── CallbackHandlerFactory.java │ │ │ │ ├── LogicCallback.java │ │ │ │ ├── LogicCallbackHandler.java │ │ │ │ ├── PeerCallback.java │ │ │ │ └── PeerCallbackHandler.java │ │ │ │ └── result │ │ │ │ └── DataSourceOpResult.java │ │ │ └── test │ │ │ └── java │ │ │ └── AppTest.java │ ├── doris.client │ │ ├── dataserver.error.log │ │ ├── dataserver.log │ │ ├── dataserver.log.2013-01-21 │ │ ├── dataserver.log.2013-03-12 │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ ├── META-INF │ │ │ │ │ └── MANIFEST.MF │ │ │ │ └── com │ │ │ │ │ └── alibaba │ │ │ │ │ └── doris │ │ │ │ │ └── client │ │ │ │ │ ├── ClientConfigManager.java │ │ │ │ │ ├── DataSourceManagerImpl.java │ │ │ │ │ ├── DataSourceRouterImpl.java │ │ │ │ │ ├── DataStoreFactoryBean.java │ │ │ │ │ ├── DataStoreFactoryImpl.java │ │ │ │ │ ├── DataStoreImpl.java │ │ │ │ │ ├── DefaultDataSourceImpl.java │ │ │ │ │ ├── compress │ │ │ │ │ ├── CompressInterceptor.java │ │ │ │ │ ├── DecompressInterceptor.java │ │ │ │ │ ├── ListDecompressInterceptor.java │ │ │ │ │ └── MapCompressInterceptor.java │ │ │ │ │ ├── interceptor │ │ │ │ │ ├── DeserializeInterceptor.java │ │ │ │ │ ├── ListDeserializeInterceptor.java │ │ │ │ │ ├── MapSerializeInterceptor.java │ │ │ │ │ ├── MapValueValidateInterceptor.java │ │ │ │ │ ├── SerializeInterceptor.java │ │ │ │ │ ├── SerializerManager.java │ │ │ │ │ └── ValueValidateInterceptor.java │ │ │ │ │ ├── operation │ │ │ │ │ ├── AbstractOperation.java │ │ │ │ │ ├── failover │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ ├── AbstractFailoverCallbackHandler.java │ │ │ │ │ │ │ ├── BaseFailoverCallbackHandler.java │ │ │ │ │ │ │ ├── DefaultCallbackHandlerFactory.java │ │ │ │ │ │ │ ├── DefaultLogicCallback.java │ │ │ │ │ │ │ ├── DefaultPeerCallback.java │ │ │ │ │ │ │ ├── LogicFailoverCallbackHandler.java │ │ │ │ │ │ │ ├── PeerAbstractFailoverCallbackHandler.java │ │ │ │ │ │ │ ├── PeerBaseFailoverCallbackHandler.java │ │ │ │ │ │ │ └── PeerFailoverCallbackHandler.java │ │ │ │ │ └── impl │ │ │ │ │ │ ├── DefaultKvOperationFactory.java │ │ │ │ │ │ ├── DeleteOperation.java │ │ │ │ │ │ ├── GetOperation.java │ │ │ │ │ │ ├── GetsOperation.java │ │ │ │ │ │ ├── OperationDataConverterImpl.java │ │ │ │ │ │ ├── PutOperation.java │ │ │ │ │ │ └── PutsOperation.java │ │ │ │ │ ├── pool │ │ │ │ │ └── ConnectionPool.java │ │ │ │ │ └── validate │ │ │ │ │ ├── KeyValidator.java │ │ │ │ │ ├── Validator.java │ │ │ │ │ └── ValueValidator.java │ │ │ └── resources │ │ │ │ ├── default-doris-client.properties │ │ │ │ ├── doris-aop.xml │ │ │ │ └── mock-doris-client.properties │ │ │ └── test │ │ │ ├── java │ │ │ ├── com │ │ │ │ └── alibaba │ │ │ │ │ └── doris │ │ │ │ │ ├── client │ │ │ │ │ ├── DataStoreCompressTest.java │ │ │ │ │ ├── DataStoreNumberTest.java │ │ │ │ │ ├── DataStoreSerializeTest.java │ │ │ │ │ ├── DataStoreTest.java │ │ │ │ │ ├── MainTestPutsGets.java │ │ │ │ │ ├── NamespaceTest.java │ │ │ │ │ ├── ObjectStoreTest.java │ │ │ │ │ ├── mock │ │ │ │ │ │ ├── DorisClientMockConfigManager.java │ │ │ │ │ │ ├── DorisClientMockKvConnection.java │ │ │ │ │ │ ├── MockDataStoreFactoryImpl.java │ │ │ │ │ │ └── MockKvDataSource.java │ │ │ │ │ └── testdata │ │ │ │ │ │ ├── DorisClientOrder.java │ │ │ │ │ │ └── DorisClientProduct.java │ │ │ │ │ └── demo │ │ │ │ │ ├── DorisDemo.java │ │ │ │ │ └── KeyMaker.java │ │ │ └── log4j.xml │ │ │ └── resources │ │ │ ├── doris-client.properties │ │ │ ├── mock-doris-client.properties │ │ │ └── t.properties │ ├── doris.tools.deploy │ │ ├── pom.xml │ │ └── src │ │ │ ├── assemble │ │ │ ├── dev.xml │ │ │ └── release.xml │ │ │ ├── bin │ │ │ ├── clientDataMaker │ │ │ ├── clientcheck │ │ │ ├── datacheck │ │ │ ├── nodeDataMaker │ │ │ └── nodecheck │ │ │ └── conf │ │ │ ├── doris-client.properties │ │ │ └── log4j.xml │ └── doris.tools │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── client │ │ │ ├── test │ │ │ └── PressureTestingTool.java │ │ │ └── tools │ │ │ ├── ClientCheckTool.java │ │ │ ├── ConnectionFactoryTool.java │ │ │ ├── DataCheckTool.java │ │ │ ├── PressureTestingBase.java │ │ │ └── datamaker │ │ │ ├── ClentBaseTask.java │ │ │ ├── ClientDataMakerTool.java │ │ │ ├── ClientGetTask.java │ │ │ └── ClientPutTask.java │ │ └── test │ │ └── java │ │ ├── com │ │ └── alibaba │ │ │ └── BdbPressureTesting.java │ │ └── doris-client.properties ├── doris.common │ ├── doris.algorithm │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── algorithm │ │ │ │ ├── ConsistentHashRouteAlglorithm.java │ │ │ │ ├── HashFunction.java │ │ │ │ ├── KetamaHashFunction.java │ │ │ │ ├── KeyUtil.java │ │ │ │ ├── RouteAlgorithm.java │ │ │ │ ├── mirgate │ │ │ │ ├── MigrationPair.java │ │ │ │ ├── MigrationRouter.java │ │ │ │ └── TempFailResolveRouter.java │ │ │ │ ├── util │ │ │ │ ├── MD5Util.java │ │ │ │ └── RandomNumUtil.java │ │ │ │ └── vpm │ │ │ │ ├── PNode2VNodeMapping.java │ │ │ │ ├── VpmMapping.java │ │ │ │ └── VpmRouterAlgorithm.java │ │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ ├── doris │ │ │ └── algorithm │ │ │ │ ├── mirgate │ │ │ │ └── MigrationRouterTest.java │ │ │ │ └── vpm │ │ │ │ └── PNode2VNodeMappingTest.java │ │ │ └── platform │ │ │ └── app │ │ │ └── AppTest.java │ ├── doris.aop │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── dproxy │ │ │ │ ├── AbstractInterceptor.java │ │ │ │ ├── Interceptor.java │ │ │ │ ├── InterceptorGroup.java │ │ │ │ ├── InvokeInfo.java │ │ │ │ ├── ProxyFactory.java │ │ │ │ └── interceptor │ │ │ │ ├── LogInterceptor.java │ │ │ │ └── MethodCheckInterceptor.java │ │ │ └── test │ │ │ └── java │ │ │ ├── com │ │ │ └── alibaba │ │ │ │ └── AppTest.java │ │ │ └── common-aop.xml │ ├── doris.client.net │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── client │ │ │ │ └── net │ │ │ │ ├── Connection.java │ │ │ │ ├── ConnectionFactory.java │ │ │ │ ├── ConnectionMetaOperation.java │ │ │ │ ├── DataSource.java │ │ │ │ ├── NetException.java │ │ │ │ ├── OperationFuture.java │ │ │ │ ├── OperationFutureImpl.java │ │ │ │ ├── command │ │ │ │ ├── BaseCommand.java │ │ │ │ ├── CheckCommand.java │ │ │ │ ├── CheckQueueCommand.java │ │ │ │ ├── Command.java │ │ │ │ ├── CompareAndDeleteCommand.java │ │ │ │ ├── CompareAndSetCommand.java │ │ │ │ ├── DeleteCommand.java │ │ │ │ ├── ErrorType.java │ │ │ │ ├── GetCommand.java │ │ │ │ ├── MigrateCommand.java │ │ │ │ ├── SetCommand.java │ │ │ │ ├── StatCommand.java │ │ │ │ └── result │ │ │ │ │ └── CheckResult.java │ │ │ │ ├── exception │ │ │ │ ├── ClientConnectionException.java │ │ │ │ ├── DataServerErrorException.java │ │ │ │ ├── InvalidCommandException.java │ │ │ │ └── RouteVersionOutOfDateException.java │ │ │ │ ├── local │ │ │ │ ├── LocalConnection.java │ │ │ │ └── LocalOperationFuture.java │ │ │ │ ├── netty │ │ │ │ ├── DorisClentNettyPipelineFactory.java │ │ │ │ ├── DorisClientEncodeAndDecodeHandler.java │ │ │ │ ├── DorisClientHandler.java │ │ │ │ └── NettyConnectionImpl.java │ │ │ │ └── protocol │ │ │ │ ├── ProtocolParser.java │ │ │ │ └── text │ │ │ │ ├── CheckProtocolParser.java │ │ │ │ ├── CheckQueueProtocolParser.java │ │ │ │ ├── CompareAndDeleteProtocolParser.java │ │ │ │ ├── DeleteProtocolParser.java │ │ │ │ ├── GetProtocolParser.java │ │ │ │ ├── MigrateProtocolParser.java │ │ │ │ ├── SetProtocolParser.java │ │ │ │ ├── StatProtocolParser.java │ │ │ │ └── TextProtocolParser.java │ │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── client │ │ │ └── net │ │ │ ├── ConnectionFactoryTest.java │ │ │ ├── netty │ │ │ └── MultiThreadConnectionTestRuning.java │ │ │ └── protocol │ │ │ └── text │ │ │ ├── CheckProtocolParserTest.java │ │ │ ├── CheckQueueProtocolParserTest.java │ │ │ ├── CompareAndDeleteProtocolParserTest.java │ │ │ ├── DeleteProtocolParserTest.java │ │ │ ├── GetProtocolParserTest.java │ │ │ └── SetProtocolParserTest.java │ ├── doris.common.adminservice │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── common │ │ │ │ └── adminservice │ │ │ │ ├── AdminServiceFactory.java │ │ │ │ ├── BaseAdminService.java │ │ │ │ ├── CheckFailService.java │ │ │ │ ├── CommonConfigService.java │ │ │ │ ├── ConsistentErrorReportService.java │ │ │ │ ├── MigrateReportService.java │ │ │ │ ├── MonitorService.java │ │ │ │ ├── NamespaceService.java │ │ │ │ ├── PostMigrateReportService.java │ │ │ │ ├── RouterConfigService.java │ │ │ │ ├── StoreNodeService.java │ │ │ │ ├── UserAuthService.java │ │ │ │ ├── VirtualNumberService.java │ │ │ │ ├── connenctor │ │ │ │ ├── AdminConnectionException.java │ │ │ │ └── AdminConnector.java │ │ │ │ └── impl │ │ │ │ ├── CheckFailServiceImpl.java │ │ │ │ ├── CommonConfigServiceImpl.java │ │ │ │ ├── ConsistentErrorReportServiceImpl.java │ │ │ │ ├── MigrateReportServiceImpl.java │ │ │ │ ├── MonitorServiceImpl.java │ │ │ │ ├── NamespaceServiceImpl.java │ │ │ │ ├── PostMigrateReportServiceImpl.java │ │ │ │ ├── RouteConfigServiceImpl.java │ │ │ │ ├── StoreNodeServiceImpl.java │ │ │ │ ├── UserAuthServiceImpl.java │ │ │ │ └── VirtualNumberServiceImpl.java │ │ │ └── test │ │ │ ├── java │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── common │ │ │ │ └── adminservice │ │ │ │ ├── CheckFailServlet.java │ │ │ │ ├── NamespaceServlet.java │ │ │ │ ├── RouterConfigServiceServlet.java │ │ │ │ ├── connenctor │ │ │ │ ├── AdminConnectorTest.java │ │ │ │ ├── JettyServer.java │ │ │ │ └── RouteConfigServlet.java │ │ │ │ └── factory │ │ │ │ └── AdminServiceFactoryTest.java │ │ │ └── resources │ │ │ ├── dorisconfig.properties │ │ │ └── log4j.xml │ ├── doris.common.config │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── common │ │ │ │ └── config │ │ │ │ ├── ConfigManagerImpl.java │ │ │ │ └── NamespaceManagerImpl.java │ │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ ├── ConfigManagerImplTest.java │ │ │ ├── JettyServer.java │ │ │ ├── MockDorisConfigServletWithConfigChange.java │ │ │ ├── MockDorisConfigServletWithoutConfigChange.java │ │ │ ├── NamespaceManagerImplTest.java │ │ │ └── dorisconfig.properties │ ├── doris.common.model │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── common │ │ │ │ └── data │ │ │ │ ├── ActionPair.java │ │ │ │ ├── ByteWrapper.java │ │ │ │ ├── CompareStatus.java │ │ │ │ ├── Key.java │ │ │ │ ├── KeyFactory.java │ │ │ │ ├── Pair.java │ │ │ │ ├── Value.java │ │ │ │ ├── ValueFactory.java │ │ │ │ ├── impl │ │ │ │ ├── ActionPairImpl.java │ │ │ │ ├── ByteWrapperValueImpl.java │ │ │ │ ├── KeyImpl.java │ │ │ │ ├── NullValueImpl.java │ │ │ │ ├── PairImpl.java │ │ │ │ └── ValueImpl.java │ │ │ │ └── util │ │ │ │ ├── ByteUtils.java │ │ │ │ └── FlagUtils.java │ │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── common │ │ │ └── data │ │ │ ├── KeyTest.java │ │ │ ├── ValueTest.java │ │ │ └── util │ │ │ └── FlagUtilsTest.java │ ├── doris.common.route │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── common │ │ │ │ ├── route │ │ │ │ └── MockVirtualRouter.java │ │ │ │ └── router │ │ │ │ ├── service │ │ │ │ ├── RouteConfigParser.java │ │ │ │ ├── RouteStrategyImpl.java │ │ │ │ ├── RouteTableConfigerImpl.java │ │ │ │ └── RouterListContainer.java │ │ │ │ └── virtual │ │ │ │ ├── LocalVirtualRouter.java │ │ │ │ └── VirtualRouterImpl.java │ │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── common │ │ │ └── route │ │ │ ├── RouteStrategyTest.java │ │ │ └── VirtualRouteTest.java │ ├── doris.common.tools │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ ├── cli │ │ │ │ ├── CommandException.java │ │ │ │ ├── CommandExecutionException.java │ │ │ │ ├── CommandLine.java │ │ │ │ ├── CommandLineHandler.java │ │ │ │ ├── Demo.java │ │ │ │ ├── HelpPrinter.java │ │ │ │ ├── Option.java │ │ │ │ └── Parser.java │ │ │ │ └── client │ │ │ │ └── tools │ │ │ │ └── concurrent │ │ │ │ ├── AtomTask.java │ │ │ │ ├── AtomTaskImpl.java │ │ │ │ ├── ParralelDemo.java │ │ │ │ ├── ParralelExecutor.java │ │ │ │ ├── ParralelExecutorImpl.java │ │ │ │ ├── ParralelTask.java │ │ │ │ ├── ParralelTaskFactory.java │ │ │ │ ├── ParralelTaskImpl.java │ │ │ │ ├── PermMeter.java │ │ │ │ └── Range.java │ │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── platform │ │ │ └── app │ │ │ └── AppTest.java │ └── doris.common │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ └── java │ │ │ ├── META-INF │ │ │ └── MANIFEST.MF │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── common │ │ │ ├── AdminServiceConstants.java │ │ │ ├── ConsistentErrorType.java │ │ │ ├── Constants.java │ │ │ ├── MigrateStatusEnum.java │ │ │ ├── MigrateTypeEnum.java │ │ │ ├── MonitorWarnConstants.java │ │ │ ├── Namespace.java │ │ │ ├── NamespaceManager.java │ │ │ ├── NodeRouteStatus.java │ │ │ ├── NodeStatus.java │ │ │ ├── PrefReportUnit.java │ │ │ ├── RealtimeInfo.java │ │ │ ├── RouteConfigInstance.java │ │ │ ├── StoreNode.java │ │ │ ├── StoreNodeSequenceEnum.java │ │ │ ├── compress │ │ │ ├── Compressor.java │ │ │ └── GZipCompressor.java │ │ │ ├── config │ │ │ ├── ClientConfiguration.java │ │ │ ├── ConfigException.java │ │ │ ├── ConfigListener.java │ │ │ ├── ConfigManager.java │ │ │ ├── ConfigTools.java │ │ │ ├── ConfigUtil.java │ │ │ └── Configurable.java │ │ │ ├── configer │ │ │ ├── RouteTableConfiger.java │ │ │ └── impl │ │ │ │ ├── MockRouteStrategyImpl.java │ │ │ │ ├── MockRouteTableConfiger.java │ │ │ │ └── MormandyNodeConfiger.java │ │ │ ├── constants │ │ │ ├── CompressModeEnum.java │ │ │ └── SerializeModeEnum.java │ │ │ ├── event │ │ │ ├── RouteConfigChangeEvent.java │ │ │ ├── RouteConfigListener.java │ │ │ └── impl │ │ │ │ └── DefaultConfigListener.java │ │ │ ├── migrate │ │ │ ├── MigrateStatusReport.java │ │ │ ├── MigrateSubCommand.java │ │ │ └── NodeMigrateStatus.java │ │ │ ├── operation │ │ │ ├── OperationEnum.java │ │ │ ├── OperationPolicy.java │ │ │ └── OperationType.java │ │ │ ├── route │ │ │ ├── DorisRouterException.java │ │ │ ├── MigrationRoutePair.java │ │ │ ├── RouteStrategy.java │ │ │ ├── RouteTable.java │ │ │ ├── RouteTableImpl.java │ │ │ └── VirtualRouter.java │ │ │ ├── serialize │ │ │ ├── JavaObjectSerializer.java │ │ │ ├── JsonSerializer.java │ │ │ ├── NoneSerializer.java │ │ │ ├── Serializer.java │ │ │ └── StringSerializer.java │ │ │ └── util │ │ │ ├── ConcurrentHashSet.java │ │ │ ├── IPAddressUtil.java │ │ │ └── PropertiesLoadUtil.java │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── common │ │ │ ├── compress │ │ │ └── CompressorTest.java │ │ │ ├── config │ │ │ └── ConfigToolsTest.java │ │ │ ├── configer │ │ │ └── impl │ │ │ │ └── RouteStrategyImplTest.java │ │ │ ├── operation │ │ │ └── policy │ │ │ │ └── OperationPolicyTest.java │ │ │ ├── serialize │ │ │ ├── JavaObjectSerializerTest.java │ │ │ └── Product.java │ │ │ └── util │ │ │ ├── PropertiesLoadUtilTest.java │ │ │ └── test │ │ │ └── test │ │ │ └── test │ │ │ └── testp.properties │ │ └── resources │ │ ├── configToolsTestFile.properties │ │ └── test │ │ └── test │ │ └── test │ │ └── testp.properties └── pom.xml ├── dataserver ├── dataserver.bdbstore │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── dataserver │ │ │ │ └── store │ │ │ │ └── bdb │ │ │ │ ├── BDBDataBase.java │ │ │ │ ├── BDBDataBaseFactory.java │ │ │ │ ├── BDBStorage.java │ │ │ │ ├── BDBStorageConfig.java │ │ │ │ ├── BDBStorageDriver.java │ │ │ │ ├── BDBStorageException.java │ │ │ │ ├── BDBStorageType.java │ │ │ │ └── utils │ │ │ │ ├── BDBConfigUtil.java │ │ │ │ └── EnvironmentInfomationManager.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── autoconf │ │ │ ├── auto-config.xml │ │ │ └── default_bdb.properties.vm │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ ├── common │ │ │ └── router │ │ │ │ └── virtual │ │ │ │ └── VirtualRouterImpl.java │ │ │ └── dataserver │ │ │ └── store │ │ │ └── bdb │ │ │ ├── BDBConfigUtilsTest.java │ │ │ ├── BDBStorageTest.java │ │ │ ├── BaseBdbStorageTest.java │ │ │ ├── BaseTestCase.java │ │ │ ├── BdbStorageCommonTest.java │ │ │ ├── StorageDriverTest.java │ │ │ └── utils │ │ │ └── EnvironmentInfomationManagerTest.java │ │ └── resources │ │ ├── bdb_db │ │ ├── 00000000.jdb │ │ ├── je.info.0 │ │ ├── je.info.0.lck │ │ └── je.lck │ │ ├── bdb_storage_common_test.properties │ │ ├── bdb_storage_test_mock.properties │ │ └── bdb_test_mock.properties ├── dataserver.core │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ ├── META-INF │ │ │ └── MANIFEST.MF │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── dataserver │ │ │ ├── ApplicationContext.java │ │ │ ├── BaseModule.java │ │ │ ├── DataServerException.java │ │ │ ├── FatalModuleInitializationException.java │ │ │ ├── Module.java │ │ │ ├── ModuleContext.java │ │ │ ├── ModuleContextAware.java │ │ │ ├── ModuleStatusChecker.java │ │ │ ├── action │ │ │ ├── Action.java │ │ │ ├── ActionExecuteException.java │ │ │ ├── ActionExecutorFilter.java │ │ │ ├── ActionFactory.java │ │ │ ├── ActionType.java │ │ │ ├── BaseAction.java │ │ │ ├── data │ │ │ │ ├── ActionData.java │ │ │ │ ├── BaseActionData.java │ │ │ │ ├── BaseActionType.java │ │ │ │ ├── CheckActionData.java │ │ │ │ ├── CommonActionData.java │ │ │ │ ├── CompareAndDeleteActionData.java │ │ │ │ ├── CompareAndSetActionData.java │ │ │ │ ├── ErrorActionData.java │ │ │ │ ├── ExitActionData.java │ │ │ │ ├── ShutdownActionData.java │ │ │ │ ├── SimpleActionData.java │ │ │ │ └── SupportBodyActionData.java │ │ │ └── parser │ │ │ │ ├── ActionParser.java │ │ │ │ ├── BaseActionParser.java │ │ │ │ ├── CheckActionParser.java │ │ │ │ ├── CompareAndDeleteActionParser.java │ │ │ │ ├── CompareAndSetActionParser.java │ │ │ │ ├── DeleteActionParser.java │ │ │ │ ├── ErrorActionParser.java │ │ │ │ ├── ExitActionParser.java │ │ │ │ ├── GetActionParser.java │ │ │ │ ├── SetActionParser.java │ │ │ │ └── ShutdownActionParser.java │ │ │ ├── config │ │ │ ├── ConfigureLoaderException.java │ │ │ ├── DataServerConfigure.java │ │ │ ├── ModuleConstances.java │ │ │ ├── MoudleConstances.java │ │ │ ├── XMLDataServerConfigureLoader.java │ │ │ └── data │ │ │ │ ├── FilterConfigure.java │ │ │ │ ├── ModuleConfigure.java │ │ │ │ └── NetworkModuleConfigure.java │ │ │ ├── core │ │ │ ├── BaseRequest.java │ │ │ ├── BaseResponse.java │ │ │ ├── DefaultApplicationContext.java │ │ │ ├── DefaultModuleContext.java │ │ │ ├── DefaultRequestFilterChian.java │ │ │ ├── FilterEntry.java │ │ │ ├── Request.java │ │ │ ├── RequestFilter.java │ │ │ ├── RequestFilterChainFactory.java │ │ │ ├── RequestFilterChian.java │ │ │ └── Response.java │ │ │ ├── event │ │ │ ├── BaseEvent.java │ │ │ ├── Event.java │ │ │ ├── EventListener.java │ │ │ ├── EventListenerManager.java │ │ │ ├── EventListnerException.java │ │ │ ├── EventRegistry.java │ │ │ ├── EventTools.java │ │ │ ├── EventType.java │ │ │ ├── config │ │ │ │ ├── ConfigEvent.java │ │ │ │ └── ConfigEventListener.java │ │ │ └── server │ │ │ │ ├── DataServerEvent.java │ │ │ │ ├── DataServerEventListener.java │ │ │ │ ├── InterruptMigratingEvent.java │ │ │ │ ├── MigrateEvent.java │ │ │ │ ├── MigrateEventListener.java │ │ │ │ ├── ShutdownEvent.java │ │ │ │ ├── StartMigratingEvent.java │ │ │ │ ├── StartupEvent.java │ │ │ │ └── StopMigratingEvent.java │ │ │ ├── net │ │ │ ├── ByteBufferWrapper.java │ │ │ ├── InvalidCommandException.java │ │ │ └── protocol │ │ │ │ ├── ProtocolParseExcetion.java │ │ │ │ └── text │ │ │ │ └── ProtocolConstant.java │ │ │ └── store │ │ │ ├── BaseStorage.java │ │ │ ├── ClosableIterator.java │ │ │ ├── Storage.java │ │ │ ├── StorageConfig.java │ │ │ ├── StorageDriver.java │ │ │ ├── StorageManager.java │ │ │ ├── StorageModule.java │ │ │ ├── StorageType.java │ │ │ ├── exception │ │ │ ├── LoadStorageException.java │ │ │ ├── StorageException.java │ │ │ └── VersionConflictException.java │ │ │ ├── mock │ │ │ ├── MockStorage.java │ │ │ ├── MockStorageDriver.java │ │ │ └── MockStorageType.java │ │ │ └── serialize │ │ │ ├── BaseSerializer.java │ │ │ ├── KeySerializer.java │ │ │ ├── KeyValueSerializerFactory.java │ │ │ ├── Serializer.java │ │ │ └── ValueSerializer.java │ │ └── test │ │ └── java │ │ └── com │ │ └── alibaba │ │ └── doris │ │ ├── common │ │ └── router │ │ │ └── virtual │ │ │ └── VirtualRouterImpl.java │ │ └── dataserver │ │ ├── action │ │ └── parser │ │ │ ├── BaseActionParserTest.java │ │ │ └── CheckActionParserTest.java │ │ ├── core │ │ └── DefaultApplicationContextTest.java │ │ ├── event │ │ └── EventListenerManagerTest.java │ │ └── store │ │ ├── StorageManagerTest.java │ │ ├── StorageTest.java │ │ └── serialize │ │ ├── KeySerializerTest.java │ │ └── ValueSerializerTest.java ├── dataserver.deploy │ ├── pom.xml │ ├── src │ │ ├── assemble │ │ │ ├── dev.xml │ │ │ └── release.xml │ │ ├── autoconf │ │ │ ├── auto-config.xml │ │ │ ├── dataserver.xml.vm │ │ │ ├── doris_adminserver_config.properties.vm │ │ │ ├── mysql.properties.vm │ │ │ └── startApp.sh.vm │ │ ├── bin │ │ │ ├── nodeDataImport │ │ │ ├── nodeDataMaker │ │ │ └── nodecheck │ │ └── main │ │ │ └── resources │ │ │ ├── META-INF │ │ │ └── MANIFEST.MF │ │ │ └── log4j.xml │ ├── startServer9000.sh │ └── startServer9005.sh ├── dataserver.extratools │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── dataserver │ │ │ │ └── extratools │ │ │ │ ├── ExtraActionType.java │ │ │ │ ├── ExtraToolsModule.java │ │ │ │ ├── help │ │ │ │ ├── HelperAction.java │ │ │ │ ├── HelperActionData.java │ │ │ │ ├── HelperActionParser.java │ │ │ │ └── print │ │ │ │ │ ├── DocumentParser.java │ │ │ │ │ ├── Line.java │ │ │ │ │ ├── LiterallyLine.java │ │ │ │ │ ├── Printer.java │ │ │ │ │ ├── Section.java │ │ │ │ │ ├── SectionLine.java │ │ │ │ │ └── TypeLine.java │ │ │ │ └── replica │ │ │ │ ├── ReplicaException.java │ │ │ │ ├── ReplicaTool.java │ │ │ │ └── action │ │ │ │ ├── ExportAction.java │ │ │ │ ├── ExportActionData.java │ │ │ │ ├── ExportActionParser.java │ │ │ │ ├── ImportAction.java │ │ │ │ ├── ImportActionData.java │ │ │ │ └── ImportActionParser.java │ │ └── resources │ │ │ └── help.txt │ │ └── test │ │ └── java │ │ └── com │ │ └── alibaba │ │ └── doris │ │ ├── common │ │ └── router │ │ │ └── virtual │ │ │ └── VirtualRouterImpl.java │ │ └── dataserver │ │ └── extratools │ │ └── replica │ │ └── action │ │ └── ExportActionParserTest.java ├── dataserver.handlersocket │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ ├── doris │ │ │ │ └── dataserver │ │ │ │ │ └── store │ │ │ │ │ └── handlersocket │ │ │ │ │ ├── HandlerSocketException.java │ │ │ │ │ ├── HandlerSocketStorage.java │ │ │ │ │ ├── HandlerSocketStorageConfig.java │ │ │ │ │ ├── HandlerSocketStorageDriver.java │ │ │ │ │ ├── HandlerSocketStorageType.java │ │ │ │ │ └── util │ │ │ │ │ └── HandlerSocketConfigUtil.java │ │ │ │ └── hsclient │ │ │ │ ├── Command.java │ │ │ │ ├── HSClient.java │ │ │ │ ├── IndexSession.java │ │ │ │ ├── bean │ │ │ │ ├── FilterInfo.java │ │ │ │ ├── InInfo.java │ │ │ │ ├── IndexInfo.java │ │ │ │ ├── IndexRecord.java │ │ │ │ ├── LimitInfo.java │ │ │ │ ├── ModInfo.java │ │ │ │ ├── ResultInfo.java │ │ │ │ └── RowInfo.java │ │ │ │ ├── commond │ │ │ │ ├── AuthenticationCommand.java │ │ │ │ ├── DecrementCommand.java │ │ │ │ ├── DeleteCommand.java │ │ │ │ ├── FindCommand.java │ │ │ │ ├── IncrementCommand.java │ │ │ │ ├── InsertCommand.java │ │ │ │ ├── OpenIndexCommand.java │ │ │ │ └── UpdateCommand.java │ │ │ │ ├── conf │ │ │ │ └── HSConfig.java │ │ │ │ ├── exception │ │ │ │ └── HandlerSocketException.java │ │ │ │ ├── impl │ │ │ │ ├── HSClientImpl.java │ │ │ │ └── IndexSessionImpl.java │ │ │ │ └── util │ │ │ │ ├── CompareOperator.java │ │ │ │ ├── Const.java │ │ │ │ ├── FilterOperator.java │ │ │ │ ├── HSUtils.java │ │ │ │ ├── ModOperator.java │ │ │ │ └── OpConst.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── autoconf │ │ │ ├── auto-config.xml │ │ │ └── default_bdb.properties.vm │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── dataserver │ │ │ └── store │ │ │ └── handlersocket │ │ │ ├── HandlerSocketConfigUtilsTest.java │ │ │ ├── HandlerSocketStorageDriverTest.java │ │ │ └── HandlerSocketStorageTest.java │ │ └── resources │ │ ├── handlersocket_test.properties │ │ └── log4j.properties ├── dataserver.innodb │ ├── lib │ │ └── jna-3.2.2.jar │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ ├── alibaba │ │ │ │ └── doris │ │ │ │ │ └── dataserver │ │ │ │ │ └── store │ │ │ │ │ └── innodb │ │ │ │ │ ├── InnoDBStorage.java │ │ │ │ │ ├── InnoDBStorageDriver.java │ │ │ │ │ ├── InnoDBStorageException.java │ │ │ │ │ ├── InnoDBStorageType.java │ │ │ │ │ ├── config │ │ │ │ │ └── InnoDBDatabaseConfiguration.java │ │ │ │ │ ├── db │ │ │ │ │ ├── InnoDBBase.java │ │ │ │ │ ├── InnoDBBuilder.java │ │ │ │ │ └── InnoDBDataBase.java │ │ │ │ │ ├── util │ │ │ │ │ └── InnoDBConfigUtils.java │ │ │ │ │ └── write │ │ │ │ │ ├── InnoWriteThread.java │ │ │ │ │ ├── WriteOperation.java │ │ │ │ │ └── WriteType.java │ │ │ │ └── g414 │ │ │ │ └── haildb │ │ │ │ ├── ColumnAttribute.java │ │ │ │ ├── ColumnDef.java │ │ │ │ ├── ColumnType.java │ │ │ │ ├── Cursor.java │ │ │ │ ├── Database.java │ │ │ │ ├── DatabaseConfiguration.java │ │ │ │ ├── IndexDef.java │ │ │ │ ├── InnoException.java │ │ │ │ ├── TableBuilder.java │ │ │ │ ├── TableDef.java │ │ │ │ ├── TableType.java │ │ │ │ ├── Transaction.java │ │ │ │ ├── Tuple.java │ │ │ │ ├── TupleStorage.java │ │ │ │ ├── Util.java │ │ │ │ ├── Validation.java │ │ │ │ ├── impl │ │ │ │ └── jna │ │ │ │ │ └── HailDB.java │ │ │ │ └── tpl │ │ │ │ ├── DatabaseTemplate.java │ │ │ │ ├── Functional.java │ │ │ │ └── KeyHelper.java │ │ └── resources │ │ │ ├── META-INF │ │ │ └── autoconf │ │ │ │ ├── auto-config.xml │ │ │ │ └── default_innodb.properties.vm │ │ │ └── innodb.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── alibaba │ │ └── doris │ │ └── dataserver │ │ └── store │ │ └── innodb │ │ ├── InnodbStorageTest.java │ │ ├── db │ │ ├── InnoDBDataBaseTest.java │ │ └── PressureTestForInnoDB.java │ │ └── innodb.properties ├── dataserver.kyotocabinet │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ ├── com │ │ │ │ └── alibaba │ │ │ │ │ └── doris │ │ │ │ │ └── dataserver │ │ │ │ │ └── store │ │ │ │ │ └── kyotocabinet │ │ │ │ │ ├── KyotocabinetDBFactory.java │ │ │ │ │ ├── KyotocabinetDatabase.java │ │ │ │ │ ├── KyotocabinetStorage.java │ │ │ │ │ ├── KyotocabinetStorageConfig.java │ │ │ │ │ ├── KyotocabinetStorageDriver.java │ │ │ │ │ ├── KyotocabinetStorageException.java │ │ │ │ │ ├── KyotocabinetStorageType.java │ │ │ │ │ └── util │ │ │ │ │ └── DatabaseUtils.java │ │ │ └── kyotocabinet │ │ │ │ ├── Cursor.java │ │ │ │ ├── DB.java │ │ │ │ ├── Error.java │ │ │ │ ├── FileProcessor.java │ │ │ │ ├── Loader.java │ │ │ │ ├── MapReduce.java │ │ │ │ ├── Test.java │ │ │ │ ├── Utility.java │ │ │ │ ├── ValueIterator.java │ │ │ │ └── Visitor.java │ │ └── resources │ │ │ ├── jkyotocabinet.dll │ │ │ └── kyotocabinet.jar │ │ └── test │ │ └── java │ │ └── com │ │ └── alibaba │ │ └── doris │ │ └── dataserver │ │ └── store │ │ └── kyotocabinet │ │ ├── KyotocabinetDatabaseTest.java │ │ └── KyotocabinetStorageTest.java ├── dataserver.logstore │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ └── com │ │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ └── dataserver │ │ │ │ └── store │ │ │ │ └── log │ │ │ │ ├── LogStorage.java │ │ │ │ ├── LogStorageDriver.java │ │ │ │ ├── LogStorageException.java │ │ │ │ ├── LogStorageNotSupportedOperationException.java │ │ │ │ ├── LogStorageType.java │ │ │ │ ├── db │ │ │ │ ├── BatchDeleteThread.java │ │ │ │ ├── BatchWriteThread.java │ │ │ │ ├── ClumpConfigure.java │ │ │ │ ├── ClumpConfigureLoader.java │ │ │ │ ├── LogClump.java │ │ │ │ ├── LogClumpHead.java │ │ │ │ ├── LogClumpManager.java │ │ │ │ ├── LogClumpsIterator.java │ │ │ │ ├── LogCommand.java │ │ │ │ ├── LogFile.java │ │ │ │ ├── ReadWindow.java │ │ │ │ ├── WriteWindow.java │ │ │ │ ├── WriteWindowClosedException.java │ │ │ │ ├── WriteWindowRef.java │ │ │ │ └── impl │ │ │ │ │ ├── AppendLogCommand.java │ │ │ │ │ ├── BaseLogCommand.java │ │ │ │ │ ├── DefaultLogClumpHeadImpl.java │ │ │ │ │ ├── DefaultLogClumpImpl.java │ │ │ │ │ ├── DefaultReadWindowImpl.java │ │ │ │ │ ├── DefaultWriteWindowImpl.java │ │ │ │ │ ├── DefaultWriteWindowRefImpl.java │ │ │ │ │ ├── DeleteLogByTimestampCommand.java │ │ │ │ │ ├── DeleteLogByVnodesCommand.java │ │ │ │ │ └── ExitLogCommand.java │ │ │ │ ├── entry │ │ │ │ ├── BaseLogEntry.java │ │ │ │ ├── ClumpHeadEntry.java │ │ │ │ ├── DeleteLogEntry.java │ │ │ │ ├── LogEntry.java │ │ │ │ └── SetLogEntry.java │ │ │ │ ├── serialize │ │ │ │ ├── LogSerializer.java │ │ │ │ ├── LogSerializerFactory.java │ │ │ │ └── impl │ │ │ │ │ └── DefaultLogSerializer.java │ │ │ │ └── utils │ │ │ │ └── LogFileUtil.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── autoconf │ │ │ ├── auto-config.xml │ │ │ └── default_log_storage.properties.vm │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ ├── common │ │ │ └── router │ │ │ │ └── virtual │ │ │ │ └── VirtualRouterImpl.java │ │ │ └── dataserver │ │ │ └── store │ │ │ └── log │ │ │ ├── BaseTestCase.java │ │ │ ├── db │ │ │ ├── ClumpConfigureLoaderTest.java │ │ │ ├── LogClumpManagerTest.java │ │ │ ├── LogFileTest.java │ │ │ ├── LogStoragePressureTest.java │ │ │ ├── LogStorageTest.java │ │ │ └── impl │ │ │ │ └── DefaultLogClumpImplTest.java │ │ │ ├── entry │ │ │ └── LogEntryTest.java │ │ │ ├── serialize │ │ │ └── impl │ │ │ │ └── DefaultLogSerializerTest.java │ │ │ └── utils │ │ │ └── LogFileUtilTest.java │ │ └── resources │ │ ├── com │ │ └── alibaba │ │ │ └── doris │ │ │ └── dataserver │ │ │ └── store │ │ │ └── log │ │ │ ├── db │ │ │ └── data │ │ │ │ ├── 00000000.ld │ │ │ │ ├── 00000000.lh │ │ │ │ ├── 00000001.ld │ │ │ │ └── 00000001.lh │ │ │ └── utils │ │ │ └── data │ │ │ ├── 00000000.ld │ │ │ ├── 00000000.lh │ │ │ ├── 00000001.ld │ │ │ └── 00000001.lh │ │ ├── log4j.xml │ │ ├── log_storage_load_test.properties │ │ └── log_storage_presure_test.properties ├── dataserver.migrator │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ ├── META-INF │ │ │ └── MANIFEST.MF │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── dataserver │ │ │ └── migrator │ │ │ ├── MigrateActionType.java │ │ │ ├── MigrationException.java │ │ │ ├── MigrationManager.java │ │ │ ├── MigrationModule.java │ │ │ ├── MigrationParam.java │ │ │ ├── MigrationTaskScheduler.java │ │ │ ├── action │ │ │ ├── MigrateActionParser.java │ │ │ ├── MigrationAction.java │ │ │ └── MigrationActionData.java │ │ │ ├── connection │ │ │ ├── ConnectionManager.java │ │ │ ├── MigrationConnectionManager.java │ │ │ └── ThreadLocalConnection.java │ │ │ ├── event │ │ │ ├── DefaultMigrationListener.java │ │ │ ├── MigrationEvent.java │ │ │ └── MigrationListener.java │ │ │ ├── filter │ │ │ ├── MigrationFilter.java │ │ │ ├── MigrationVirtualNodeFinder.java │ │ │ └── ProxyOperationException.java │ │ │ ├── report │ │ │ ├── DefaultMigrationReporter.java │ │ │ └── MigrationReporter.java │ │ │ ├── task │ │ │ ├── BaseMigrationTask.java │ │ │ ├── DataMigrationExecutor.java │ │ │ ├── ExpansionMigrationTask.java │ │ │ ├── ForeverFailoverMigrationTask.java │ │ │ ├── MigrateDataThread.java │ │ │ ├── MigrationReportTimer.java │ │ │ ├── MigrationTask.java │ │ │ ├── MigrationTaskFactory.java │ │ │ ├── MigrationThreadFactory.java │ │ │ ├── MockMigrationTask.java │ │ │ ├── ProgressComputer.java │ │ │ ├── ReadDataThread.java │ │ │ ├── TempFailoverMigrationTask.java │ │ │ ├── dataclean │ │ │ │ ├── DataCleanExecutor.java │ │ │ │ └── DataCleanTask.java │ │ │ └── migrate │ │ │ │ └── ExitPair.java │ │ │ └── utils │ │ │ ├── ConnectionUtils.java │ │ │ └── DateUtil.java │ │ └── test │ │ ├── java │ │ ├── com │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ ├── common │ │ │ │ ├── config │ │ │ │ │ └── MockConfigManager.java │ │ │ │ └── router │ │ │ │ │ └── virtual │ │ │ │ │ └── VirtualRouterImpl.java │ │ │ │ └── dataserver │ │ │ │ └── migrator │ │ │ │ ├── ValueFucture.java │ │ │ │ ├── connection │ │ │ │ ├── MockKvConnection.java │ │ │ │ └── ThreadLocalConnectionTest.java │ │ │ │ ├── filter │ │ │ │ └── MigrationVirtualNodeFinderTest.java │ │ │ │ ├── mock │ │ │ │ ├── MockMigrateReportService.java │ │ │ │ └── MockMigrationConnectionManager.java │ │ │ │ ├── report │ │ │ │ └── MockMigrationReporter.java │ │ │ │ └── task │ │ │ │ └── ProgressComputerTest.java │ │ └── log4j.xml │ │ └── resources │ │ └── log4j.xml ├── dataserver.monitor │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ ├── META-INF │ │ │ └── MANIFEST.MF │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── dataserver │ │ │ └── monitor │ │ │ ├── DragoonMonitorModule.java │ │ │ ├── MonitorMudule.java │ │ │ ├── PrefRequestFilter.java │ │ │ ├── action │ │ │ ├── StatsAction.java │ │ │ ├── StatsActionData.java │ │ │ ├── StatsActionParser.java │ │ │ └── StatsActionType.java │ │ │ └── support │ │ │ ├── PerfTracker.java │ │ │ ├── PrefReportThread.java │ │ │ ├── PrefTrackerKey.java │ │ │ ├── PrefTrackerUnit.java │ │ │ ├── RealtimeInfoBuilder.java │ │ │ └── UpTime.java │ │ └── test │ │ └── java │ │ └── com │ │ └── alibaba │ │ └── doris │ │ └── common │ │ └── trace │ │ └── support │ │ └── PrefTrackerUnitTest.java ├── dataserver.mysql │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── alibaba │ │ └── doris │ │ └── dataserver │ │ └── store │ │ └── mysql │ │ ├── MysqlDatabase.java │ │ ├── MysqlStorageConfigure.java │ │ ├── MysqlStorageDriver.java │ │ ├── MysqlStorageException.java │ │ ├── MysqlStorageType.java │ │ └── util │ │ └── MysqlUtils.java ├── dataserver.server │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ ├── META-INF │ │ │ └── MANIFEST.MF │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ └── dataserver │ │ │ ├── DataServerApp.java │ │ │ ├── action │ │ │ ├── CatchCommandErrorAction.java │ │ │ ├── CheckAction.java │ │ │ ├── DeleteAction.java │ │ │ ├── ExitServerAction.java │ │ │ ├── GetAction.java │ │ │ ├── SetAction.java │ │ │ └── ShutdownAction.java │ │ │ ├── adminserver │ │ │ └── config │ │ │ │ └── AdminServerConfigModule.java │ │ │ ├── filter │ │ │ └── RouteVersionCheckFilter.java │ │ │ ├── net │ │ │ ├── NetworkModule.java │ │ │ ├── netty │ │ │ │ ├── CollectConnectionInfoHandler.java │ │ │ │ ├── DataServerDecoder.java │ │ │ │ ├── DataServerEncoder.java │ │ │ │ ├── DataServerHandler.java │ │ │ │ ├── NettyByteBufferWrapper.java │ │ │ │ ├── NettyDataServerChannelPipelineFactory.java │ │ │ │ ├── NettyRequest.java │ │ │ │ └── NettyResponse.java │ │ │ └── protocol │ │ │ │ └── text │ │ │ │ └── TextProtocolDecoder.java │ │ │ └── tools │ │ │ └── DataServerJVMShutdownHook.java │ │ └── test │ │ ├── java │ │ ├── com │ │ │ └── alibaba │ │ │ │ └── doris │ │ │ │ ├── common │ │ │ │ └── router │ │ │ │ │ └── virtual │ │ │ │ │ └── VirtualRouterImpl.java │ │ │ │ └── dataserver │ │ │ │ ├── action │ │ │ │ └── ActionFactoryTest.java │ │ │ │ ├── core │ │ │ │ ├── RequestFilterChianTest.java │ │ │ │ └── mock │ │ │ │ │ ├── MockRequest.java │ │ │ │ │ ├── MockResponse.java │ │ │ │ │ ├── NormalFilter1.java │ │ │ │ │ ├── NormalFilter2.java │ │ │ │ │ ├── TheFirstFilter.java │ │ │ │ │ └── TheLastFilter.java │ │ │ │ └── net │ │ │ │ ├── netty │ │ │ │ └── DataServerDecoderTest.java │ │ │ │ └── protocol │ │ │ │ └── text │ │ │ │ └── TextProtocolDecoderTest.java │ │ └── log4j.xml │ │ └── resources │ │ ├── bdb.properties │ │ ├── dataserver.xml │ │ ├── doris_adminserver_config.properties │ │ ├── log4j.xml │ │ ├── log_storage.properties │ │ └── mysql.properties ├── dataserver.test │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── alibaba │ │ └── doris │ │ └── dataserver │ │ └── store │ │ └── StorageTestUnit.java ├── dataserver.tools │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── doris │ │ │ ├── cli │ │ │ ├── CommandException.java │ │ │ ├── CommandExecutionException.java │ │ │ ├── CommandLine.java │ │ │ ├── CommandLineHandler.java │ │ │ ├── Demo.java │ │ │ ├── HelpPrinter.java │ │ │ ├── Option.java │ │ │ └── Parser.java │ │ │ ├── client │ │ │ └── tools │ │ │ │ ├── NodeCheckTool.java │ │ │ │ ├── concurrent │ │ │ │ ├── AtomTask.java │ │ │ │ ├── AtomTaskImpl.java │ │ │ │ ├── ParralelDemo.java │ │ │ │ ├── ParralelExecutor.java │ │ │ │ ├── ParralelExecutorImpl.java │ │ │ │ ├── ParralelTask.java │ │ │ │ ├── ParralelTaskFactory.java │ │ │ │ ├── ParralelTaskImpl.java │ │ │ │ ├── PermMeter.java │ │ │ │ └── Range.java │ │ │ │ ├── datamaker │ │ │ │ ├── NodeDataMakerTool.java │ │ │ │ └── NodePutTask.java │ │ │ │ └── importdata │ │ │ │ ├── FileReadTask.java │ │ │ │ ├── ImportExecutorImpl.java │ │ │ │ ├── KeyPair.java │ │ │ │ ├── NodeDataImporter.java │ │ │ │ └── QueuePutTask.java │ │ │ └── dataserver │ │ │ └── NodeMigrateTool.java │ │ └── test │ │ └── java │ │ └── com │ │ └── alibaba │ │ └── platform │ │ └── app │ │ └── AppTest.java └── pom.xml └── pom.xml /.gitignore: -------------------------------------------------------------------------------- 1 | .classpath 2 | .settings 3 | .project 4 | target 5 | antx.properties 6 | *.old 7 | META-INF 8 | admin/doris.admin.deploy/bin/apachectl 9 | admin/doris.admin.deploy/bin/jbossctl 10 | admin/doris.admin.deploy/bin/jettyctl 11 | admin/doris.admin.deploy/bin/killws 12 | admin/doris.admin.deploy/bin/startws 13 | 14 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | # Doris # 2 | ## a large scale distributed KV storage system ## 3 | 4 | - Release date: 2013/5/21 5 | - Doris is one of Alibaba technology product 6 | - The version can't be installed, because it is dependent on Alibaba's internal repository. But it not be must, if you have interesting on it, contact me(itisaid@gmail.com) 7 | 8 | ## Doris's feature ## 9 | - Scalable like HBase. Support large scale data storage and visit with scalable server deployment. 10 | - High available than HBase. Neither lost data nor reject app¡¯s access when any server is crashed. 11 | - High performance. Less 4 ms for commonly data access. 12 | - Easy operation. Auto failover and data recover when server is crashed. 13 | - Optimized consistence hash algorithm. More balance on data distributed than traditional consistence hash algorithm. 14 | 15 | -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/descriptors/web/jetty-web.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | executing jetty-web.xml 13 | / 14 | 15 | 16 | -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/META-INF/autoconf/auto-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/button_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/button_hover.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/button_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/button_normal.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/exit.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/head_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/head_bg.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/ico_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/ico_add.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/ico_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/ico_blue.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/ico_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/ico_green.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/ico_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/ico_grey.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/ico_orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/ico_orange.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/ico_purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/ico_purple.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/ico_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/ico_red.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/login_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/login_bg.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/login_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/login_box.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/login_btn_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/login_btn_hover.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/login_btn_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/login_btn_normal.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/login_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/login_logo.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/login_shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/login_shadow.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/logo.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/main_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/main_bg.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/nav_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/nav_bg.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/nav_btn_bg2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/nav_btn_bg2.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/nav_btn_bg22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/nav_btn_bg22.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/nav_btn_bg3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/nav_btn_bg3.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/nav_btn_bg33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/nav_btn_bg33.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/nav_btn_bg44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/nav_btn_bg44.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/nav_pass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/nav_pass.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/nav_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/nav_selected.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/pop_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/pop_close.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/pop_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/pop_left.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/pop_leftbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/pop_leftbottom.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/pop_lefttop_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/pop_lefttop_small.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/pop_midbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/pop_midbottom.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/pop_midtop_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/pop_midtop_small.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/pop_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/pop_right.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/pop_rightbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/pop_rightbottom.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/pop_righttop_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/pop_righttop_small.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/search_global_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/search_global_m.png -------------------------------------------------------------------------------- /admin/doris.admin.bundle/war/src/main/webapp/images/table_title_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.bundle/war/src/main/webapp/images/table_title_bg.png -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/dao/ConsistentReportDao.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.dao; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import com.alibaba.doris.admin.dataobject.ConsistentReportDO; 7 | 8 | public interface ConsistentReportDao { 9 | 10 | Integer insert(ConsistentReportDO consistentReportDO); 11 | 12 | List queryConsistentReport(Map params); 13 | 14 | int countConsistentReport(Map params); 15 | 16 | Integer deleteByIds(List ids); 17 | 18 | Integer deleteByGmtCreate(String gmtCreateFrom, String gmtCreateTo); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/dao/SystemLogDao.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.dao; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import com.alibaba.doris.admin.dataobject.SystemLogDO; 7 | 8 | public interface SystemLogDao { 9 | 10 | @SuppressWarnings("unchecked") 11 | List querySystemLogs(Map paramMap); 12 | 13 | @SuppressWarnings("unchecked") 14 | int querySystemLogCounts(Map paramMap); 15 | 16 | void insertSystemLog(SystemLogDO systemLogDO); 17 | 18 | void insertSystemLogs(List systemLogs); 19 | } 20 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/dao/UserDao.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Project: doris.config.server-1.0-SNAPSHOT 3 | * 4 | * File Created at 2011-4-27 5 | * $Id$ 6 | * 7 | * Copyright 1999-2100 Alibaba.com Corporation Limited. 8 | * All rights reserved. 9 | * 10 | * This software is the confidential and proprietary information of 11 | * Alibaba Company. ("Confidential Information"). You shall not 12 | * disclose such Confidential Information and shall use it only in 13 | * accordance with the terms of the license agreement you entered into 14 | * with Alibaba.com. 15 | */ 16 | package com.alibaba.doris.admin.dao; 17 | 18 | import com.alibaba.doris.admin.dataobject.UserDO; 19 | 20 | /** 21 | * @author mianhe 22 | * 23 | */ 24 | public interface UserDao { 25 | 26 | public UserDO findUserByName(String userName); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/dao/VirtualNodeDao.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.dao; 2 | 3 | 4 | public interface VirtualNodeDao { 5 | 6 | int getVirtualNodeNumber(); 7 | } 8 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/dao/impl/UserDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.dao.impl; 2 | 3 | import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; 4 | 5 | import com.alibaba.doris.admin.dao.UserDao; 6 | import com.alibaba.doris.admin.dataobject.UserDO; 7 | 8 | public class UserDaoImpl extends SqlMapClientDaoSupport implements UserDao { 9 | 10 | public UserDO findUserByName(String userName) { 11 | return (UserDO) getSqlMapClientTemplate().queryForObject("User.getUserByName", userName); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/dao/impl/VirtualNodeDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.dao.impl; 2 | 3 | import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; 4 | 5 | import com.alibaba.doris.admin.dao.VirtualNodeDao; 6 | 7 | public class VirtualNodeDaoImpl extends SqlMapClientDaoSupport implements VirtualNodeDao { 8 | 9 | public int getVirtualNodeNumber() { 10 | return (Integer) getSqlMapClientTemplate().queryForObject("VirtualNode.getVirtualNodeNum"); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/monitor/DorisMonitorException.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.monitor; 2 | 3 | public class DorisMonitorException extends Exception { 4 | 5 | private static final long serialVersionUID = 1L; 6 | 7 | public DorisMonitorException() { 8 | super(); 9 | } 10 | 11 | public DorisMonitorException(String message) { 12 | super(message); 13 | } 14 | 15 | public DorisMonitorException(String message, Throwable e) { 16 | super(message, e); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/monitor/MonitorEnum.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.monitor; 2 | 3 | public enum MonitorEnum { 4 | ROUTER("Router"), ADMIN("Admin"), MIGRATION("Migration"), NODE_HEALTH("NodeHealth"); 5 | 6 | private String name; 7 | 8 | private MonitorEnum(String name) { 9 | this.name = name; 10 | } 11 | 12 | public String getName() { 13 | return name; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/scheduling/ArchivePrefLogJob.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.scheduling; 2 | 3 | import org.quartz.JobExecutionContext; 4 | import org.quartz.JobExecutionException; 5 | import org.springframework.scheduling.quartz.QuartzJobBean; 6 | 7 | import com.alibaba.doris.admin.core.AdminServiceLocator; 8 | 9 | public class ArchivePrefLogJob extends QuartzJobBean { 10 | 11 | protected void executeInternal(JobExecutionContext ctx) throws JobExecutionException { 12 | if (AdminServiceLocator.getAdminService().isMasterAdmin()) { 13 | AdminServiceLocator.getMonitorService().archiveWithTx(1); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/service/AdminService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service; 2 | 3 | /** 4 | * @project : 5 | * @author : len.liu 6 | * @datetime : 2011-7-4 下午06:05:26 7 | * @version : 8 | * @Modification: 9 | */ 10 | public interface AdminService { 11 | 12 | boolean isMasterAdmin(String ip); 13 | 14 | boolean isMasterAdmin(); 15 | } 16 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/service/LoginService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service; 2 | 3 | public interface LoginService { 4 | 5 | boolean login(String name,String password); 6 | } 7 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/service/PropertiesService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service; 2 | 3 | /** 4 | * 配置变量管理服务 5 | * 6 | * @author frank 7 | */ 8 | public interface PropertiesService { 9 | 10 | String getProperty(String key); 11 | 12 | T getProperty(String key, Class type); 13 | 14 | T getProperty(String key, Class type, T defaultValue); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/service/RouteConfigService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service; 2 | 3 | import com.alibaba.doris.admin.dataobject.RouterConfigInstanceDO; 4 | 5 | public interface RouteConfigService { 6 | 7 | public RouterConfigInstanceDO loadLatestConfigInstance(); 8 | 9 | public int insertConfigInstance(RouterConfigInstanceDO configInstanceDO); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/service/SystemLogService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import com.alibaba.doris.admin.dataobject.SystemLogDO; 7 | 8 | public interface SystemLogService { 9 | 10 | @SuppressWarnings("unchecked") 11 | List querySystemLogs( Map paramMap); 12 | 13 | int querySystemLogCounts( Map paramMap); 14 | 15 | // 16 | // void insertSystemLog(SystemLogDO systemLogDO); 17 | // 18 | // void insertSystemLogs(List systemLogs); 19 | 20 | public void info(String subject, String detail); 21 | 22 | public void error(String subject, String detail); 23 | } 24 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service; 2 | 3 | import com.alibaba.doris.admin.dataobject.UserDO; 4 | 5 | public interface UserService { 6 | 7 | public UserDO findUserByName(String userName); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/service/VirtualNodeService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service; 2 | 3 | 4 | public interface VirtualNodeService { 5 | 6 | int getVirtualNodeNum(); 7 | } 8 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/service/impl/LoginServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service.impl; 2 | 3 | import com.alibaba.doris.admin.service.LoginService; 4 | 5 | public class LoginServiceImpl implements LoginService{ 6 | 7 | public boolean login(String name, String password) { 8 | return "doris".equals(name) && "doris".equals(password); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/service/impl/UserServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.alibaba.doris.admin.dao.UserDao; 6 | import com.alibaba.doris.admin.dataobject.UserDO; 7 | import com.alibaba.doris.admin.service.UserService; 8 | 9 | @Service 10 | public class UserServiceImpl implements UserService { 11 | 12 | private UserDao userDao = null; 13 | 14 | public UserDO findUserByName(String userName) { 15 | return userDao.findUserByName(userName); 16 | } 17 | 18 | public void setUserDao(UserDao userDao) { 19 | this.userDao = userDao; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/java/com/alibaba/doris/admin/service/impl/VirtualNodeServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.alibaba.doris.admin.dao.VirtualNodeDao; 6 | import com.alibaba.doris.admin.service.VirtualNodeService; 7 | 8 | @Service 9 | public class VirtualNodeServiceImpl implements VirtualNodeService { 10 | 11 | private VirtualNodeDao virtualNodeDao; 12 | 13 | public void setVirtualNodeDao(VirtualNodeDao virtualNodeDao) { 14 | this.virtualNodeDao = virtualNodeDao; 15 | } 16 | 17 | public int getVirtualNodeNum() { 18 | return virtualNodeDao.getVirtualNodeNumber(); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/resources/META-INF/autoconf/doris_admin_service.properties.vm: -------------------------------------------------------------------------------- 1 | foreverFailTime=$!{doris_admin_service_forever_fail_time} 2 | nodeCheckTimeout=$!{doris_admin_service_node_check_timeout} 3 | nodeCheckRetries=$!{doris_admin_service_node_check_retries} 4 | nodeReloadInterval=$!{doris_admin_service_node_reload_interval} 5 | routeConfigScanInterval=$!{doris_admin_service_route_config_scan_interval} 6 | nodeCheckInterval=$!{doris_admin_service_node_check_interval} 7 | masterIp=$!{doris_admin_master_ip} -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/resources/META-INF/autoconf/jdbc.properties.vm: -------------------------------------------------------------------------------- 1 | # Properties file with JDBC-related settings. 2 | # Applied by PropertyPlaceholderConfigurer from "dataAccessContext-local.xml". 3 | # Targeted at system administrators, to avoid touching the context XML files. 4 | 5 | jdbc.driverClassName=com.mysql.jdbc.Driver 6 | 7 | jdbc.main.url=jdbc:mysql://$!{doris_database_server_ip}:$!{doris_database_server_port}/$!{doris_database_server_schema}?useUnicode=true&characterEncoding=UTF-8 8 | jdbc.main.username=$!{doris_database_server_username} 9 | jdbc.main.password=$!{doris_database_server_password} 10 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/resources/META-INF/autoconf/webconsole.properties.vm: -------------------------------------------------------------------------------- 1 | #Doris Client Config 2 | #Alibaba.com, Copyright 2011 3 | 4 | doris.config.adminserver.main.url=http://$!{doris_admin_master_ip}:$!{doris_admin_apache_port}/doris.admin 5 | doris.config.adminserver.backup.url=http://$!{doris_admin_master_ip}:$!{doris_admin_apache_port}/doris.admin 6 | 7 | doris.username=doris 8 | doris.password=doris 9 | 10 | doris.config.fetch.retrytimes=3 11 | doris.config.fetch.interval=3000 12 | doris.config.connection.timeout=2000 13 | doris.config.connection.socket.timeout=2000 14 | 15 | datasource.class = com.alibaba.doris.client.DefaultDataSourceImpl 16 | node.route.virtualRouter.class=com.alibaba.doris.common.router.virtual.VirtualRouterImpl 17 | node.configer.class = com.alibaba.doris.common.router.service.RouteTableConfigerImpl 18 | node.route.strategy.class = com.alibaba.doris.common.router.service.RouteStrategyImpl 19 | 20 | #route.hash.algorithm = SHA -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/resources/META-INF/ibatis/VirtualNode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /admin/doris.admin.core/src/main/resources/META-INF/sql/doris-config-create-dabase.sql: -------------------------------------------------------------------------------- 1 | /* 2 | * 下面的SQL完成下面的操作: 3 | * 1) 新建数据库 4 | * 2) 新建用户,并把新建的数据库的所有权限赋给该用户 5 | * 6 | * 要用MySQL的root用户来执行这些操作。 7 | */ 8 | 9 | CREATE DATABASE doris_config CHARACTER SET UTF8; 10 | GRANT ALL PRIVILEGES ON doris_config.* TO doris@"%" identified by "doris"; -------------------------------------------------------------------------------- /admin/doris.admin.core/src/test/resources/doris_admin_service.properties: -------------------------------------------------------------------------------- 1 | foreverFailTime=100000 2 | nodeCheckTimeout=1000 3 | nodeCheckRetries=3 4 | masterIp=127.0.0.1 -------------------------------------------------------------------------------- /admin/doris.admin.core/src/test/resources/jdbc.properties: -------------------------------------------------------------------------------- 1 | # Properties file with JDBC-related settings. 2 | # Applied by PropertyPlaceholderConfigurer from "dataAccessContext-local.xml". 3 | # Targeted at system administrators, to avoid touching the context XML files. 4 | 5 | jdbc.driverClassName=com.mysql.jdbc.Driver 6 | jdbc.main.url=jdbc:mysql://localhost:3306/doris_config?useUnicode=true&characterEncoding=UTF-8 7 | jdbc.main.username=doris 8 | jdbc.main.password=doris 9 | -------------------------------------------------------------------------------- /admin/doris.admin.deploy/autoconf/auto-config.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.deploy/autoconf/auto-config.xml -------------------------------------------------------------------------------- /admin/doris.admin.deploy/autoconf/jetty-logging.xml.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ${doris_admin_output}/logs/jetty_stdout.log 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /admin/doris.admin.deploy/autoconf/jetty-start.ini.vm: -------------------------------------------------------------------------------- 1 | --pre=${doris_admin_deploy}/jetty-server/conf/jetty-logging.xml 2 | OPTIONS=Server,jsp,jta 3 | ${doris_admin_deploy}/jetty-server/conf/jetty.xml 4 | lib=${doris_admin_deploy}/jetty-server/ext 5 | path=${doris_admin_deploy}/jetty-server/ext 6 | -------------------------------------------------------------------------------- /admin/doris.admin.deploy/autoconf/mod-proxy.conf.vm: -------------------------------------------------------------------------------- 1 | # Load mod_proxy module 2 | 3 | ProxyRequests Off 4 | ProxyPreserveHost On 5 | 6 | Order deny,allow 7 | Allow from all 8 | 9 | ProxyPassMatch ^/((.*).htm|css/(.*)|images/(.*)|js/(.*)|)$ http://localhost:${doris_admin_appserver_port} min=5 smax=16 ttl=600 timeout=300 10 | 11 | -------------------------------------------------------------------------------- /admin/doris.admin.deploy/htdocs/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / 3 | -------------------------------------------------------------------------------- /admin/doris.admin.deploy/jetty-conf/conf/jetty-policy.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | /lib/policy/jetty.policy 13 | 14 | 15 | 16 | jetty.home 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /admin/doris.admin.deploy/jetty-conf/conf/jetty.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.deploy/jetty-conf/conf/jetty.conf -------------------------------------------------------------------------------- /admin/doris.admin.deploy/jetty-conf/ext/jetty-server-extended.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.deploy/jetty-conf/ext/jetty-server-extended.jar -------------------------------------------------------------------------------- /admin/doris.admin.deploy/jetty-conf/ext/log4j-1.2.12.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.deploy/jetty-conf/ext/log4j-1.2.12.jar -------------------------------------------------------------------------------- /admin/doris.admin.deploy/jetty-conf/ext/log4j.properties: -------------------------------------------------------------------------------- 1 | 2 | # This is not needed by Jetty - but it helps with many web apps. 3 | 4 | log4j.rootLogger=ERROR, stdout 5 | 6 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 7 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 8 | log4j.appender.stdout.layout.ConversionPattern=[%t] %-5p %c %x - %m%n 9 | 10 | -------------------------------------------------------------------------------- /admin/doris.admin.deploy/jetty-conf/ext/slf4j-api-1.4.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.deploy/jetty-conf/ext/slf4j-api-1.4.3.jar -------------------------------------------------------------------------------- /admin/doris.admin.deploy/jetty-conf/ext/slf4j-log4j12-1.4.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.deploy/jetty-conf/ext/slf4j-log4j12-1.4.3.jar -------------------------------------------------------------------------------- /admin/doris.admin.deploy/jetty-conf/ext/xercesImpl-2.9.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.deploy/jetty-conf/ext/xercesImpl-2.9.1.jar -------------------------------------------------------------------------------- /admin/doris.admin.deploy/jetty-conf/ext/xml-apis-1.3.04.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.deploy/jetty-conf/ext/xml-apis-1.3.04.jar -------------------------------------------------------------------------------- /admin/doris.admin.deploy/jetty-conf/ext/xml-resolver-1.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.deploy/jetty-conf/ext/xml-resolver-1.2.jar -------------------------------------------------------------------------------- /admin/doris.admin.deploy/templates/common/macros.vm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.deploy/templates/common/macros.vm -------------------------------------------------------------------------------- /admin/doris.admin.deploy/templates/common/myMacros.vm: -------------------------------------------------------------------------------- 1 | #macro(groupError $field) 2 | #if(!$field.valid) 3 | $field.message 4 | #elseif($field.value != "") 5 |   6 | #end 7 | #end 8 | 9 | #macro(error $field $value) 10 | #if($field && !$field.valid) 11 | $field.message 12 | #elseif($value && $value != "") 13 |   14 | #end 15 | #end -------------------------------------------------------------------------------- /admin/doris.admin.deploy/templates/common/screen/error.vm: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /admin/doris.admin.deploy/templates/configer/screen/webconsole.vm: -------------------------------------------------------------------------------- 1 |
2 | $csrfToken.hiddenField 3 | 4 | #if($!errorResult) 5 |
6 |
$!errorResult
7 |
8 | #end 9 |

Web控制台

10 |
11 | 12 | 13 | 读:get namespace:key
14 | 写:set namespace:key<回车> value
15 |
$!result
16 |
17 | 18 | 19 |
-------------------------------------------------------------------------------- /admin/doris.admin.deploy/templates/home/screen/core/ok.vm: -------------------------------------------------------------------------------- 1 | $!{rundata.setLayoutEnabled(false)}ok -------------------------------------------------------------------------------- /admin/doris.admin.deploy/templates/home/screen/index.vm: -------------------------------------------------------------------------------- 1 | Welcome to doris admin server console 2 | -------------------------------------------------------------------------------- /admin/doris.admin.deploy/templates/home/screen/ok.vm: -------------------------------------------------------------------------------- 1 | $rundata.setLayoutEnabled(false)OK 2 | -------------------------------------------------------------------------------- /admin/doris.admin.deploy/templates/home/screen/system/systemLog.vm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/admin/doris.admin.deploy/templates/home/screen/system/systemLog.vm -------------------------------------------------------------------------------- /admin/doris.admin.service.common/src/main/java/com/alibaba/doris/admin/service/common/AdminServiceAction.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service.common; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * @author frank 7 | */ 8 | public interface AdminServiceAction { 9 | 10 | String execute(Map params); 11 | } 12 | -------------------------------------------------------------------------------- /admin/doris.admin.service.common/src/main/java/com/alibaba/doris/admin/service/common/AdminServiceException.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service.common; 2 | 3 | public class AdminServiceException extends Exception { 4 | 5 | /** 6 | * 7 | */ 8 | private static final long serialVersionUID = -2546041753710930615L; 9 | 10 | public AdminServiceException(String e) { 11 | super(e); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /admin/doris.admin.service.common/src/main/java/com/alibaba/doris/admin/service/common/migrate/command/MigrateCommandResult.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service.common.migrate.command; 2 | 3 | 4 | public class MigrateCommandResult { 5 | 6 | private Boolean result = null; 7 | private String commandParam; 8 | 9 | public Boolean getResult() { 10 | return result; 11 | } 12 | 13 | public void setResult(Boolean result) { 14 | this.result = result; 15 | } 16 | 17 | public String getCommandParam() { 18 | return commandParam; 19 | } 20 | 21 | public void setCommandParam(String commandParam) { 22 | this.commandParam = commandParam; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /admin/doris.admin.service.common/src/main/java/com/alibaba/doris/admin/service/common/migrate/status/MigrateStatusCallback.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service.common.migrate.status; 2 | 3 | /** 4 | * 迁移状态监控回调,供监控线程调用 5 | * 6 | * @author frank 7 | */ 8 | public interface MigrateStatusCallback { 9 | 10 | /** 11 | * 迁移结束 12 | */ 13 | void finishAll(); 14 | 15 | /** 16 | * 监控到迁移错误 17 | */ 18 | void notifyError(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /admin/doris.admin.service.common/src/test/java/com/alibaba/doris/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /admin/doris.admin.service.failover/src/main/java/com/alibaba/doris/admin/service/failover/node/check/NodeHealth.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Project: doris.admin.service.common-0.1.0-SNAPSHOT 3 | * 4 | * File Created at 2011-5-24 5 | * $Id$ 6 | * 7 | * Copyright 1999-2100 Alibaba.com Corporation Limited. 8 | * All rights reserved. 9 | * 10 | * This software is the confidential and proprietary information of 11 | * Alibaba Company. ("Confidential Information"). You shall not 12 | * disclose such Confidential Information and shall use it only in 13 | * accordance with the terms of the license agreement you entered into 14 | * with Alibaba.com. 15 | */ 16 | package com.alibaba.doris.admin.service.failover.node.check; 17 | 18 | /** 19 | * TODO Comment of NodeHealth 20 | * 21 | * @author mian.hem 22 | */ 23 | public enum NodeHealth { 24 | OK, 25 | NG 26 | } 27 | -------------------------------------------------------------------------------- /admin/doris.admin.service.failover/src/test/java/com/alibaba/doris/admin/service/failover/CheckTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.service.failover; 2 | 3 | import junit.framework.TestCase; 4 | 5 | import org.junit.Test; 6 | 7 | public class CheckTest extends TestCase { 8 | 9 | // NodeCheckManager ncm = NodeCheckManager.getInstance(); 10 | 11 | // public void setUp() { 12 | // new ClassPathXmlApplicationContext("classpath:/spring/doris_service_context.xml"); 13 | // } 14 | // 15 | // public void testCheckNode() { 16 | // System.out.println(ncm.checkNode("10.20.153.85:8001")); 17 | // } 18 | 19 | @Test 20 | public void test(){ 21 | //XXU reopen case 22 | // new ClassPathXmlApplicationContext("classpath:/spring/doris_service_context.xml"); 23 | // NodeCheckManager ncm = NodeCheckManager.getInstance(); 24 | // System.out.println(ncm.checkNode("10.20.153.85:8002")); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /admin/doris.admin.service.failover/src/test/resources/spring/jdbc.properties: -------------------------------------------------------------------------------- 1 | jdbc.driverClassName=com.mysql.jdbc.Driver 2 | 3 | jdbc.main.url=jdbc:mysql://localhost:3306/doris_config?useUnicode=true&characterEncoding=UTF-8 4 | jdbc.main.username=doris 5 | jdbc.main.password=doris 6 | -------------------------------------------------------------------------------- /admin/doris.admin.service.failover/src/test/resources/sqlmap-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /admin/doris.admin.service.main/src/test/java/com/alibaba/doris/admin/web/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.web; 2 | 3 | import junit.framework.TestCase; 4 | 5 | public class AppTest extends TestCase{ 6 | public void test() { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /admin/doris.admin.service.monitor/src/test/java/Main.java: -------------------------------------------------------------------------------- 1 | 2 | public class Main { 3 | 4 | } 5 | -------------------------------------------------------------------------------- /admin/doris.admin.service.monitor/src/test/resources/dbfit/tempfailover.then.wiki: -------------------------------------------------------------------------------- 1 | |connect| 2 | 3 | |query|select * from PHYSICAL_NODES where PHYSICAL_ID = 'physical_id'| 4 | |LOGICAL_ID|PHYSICAL_ID|SERIAL_ID|MACHINE_ID|IP|STATUS|PORT| 5 | |1|physical_id|1|machineid|127.0.0.1|1|8080| 6 | 7 | 8 | -------------------------------------------------------------------------------- /admin/doris.admin.service.monitor/src/test/resources/dbfit/tempfailover.when.wiki: -------------------------------------------------------------------------------- 1 | |connect| 2 | 3 | |clean table|physical_nodes| 4 | 5 | |insert|physical_nodes| 6 | |LOGICAL_ID|PHYSICAL_ID|SERIAL_ID|MACHINE_ID|IP|STATUS|GMT_CREATE|GMT_MODIFIED|PORT| 7 | |1|physical_id_1|1|machineid|127.0.0.1|1|@{datetime}|@{datetime}|4011| 8 | |2|physical_id_2|1|machineid|127.0.0.1|1|@{datetime}|@{datetime}|4012| 9 | |3|physical_id_3|1|machineid|127.0.0.1|1|@{datetime}|@{datetime}|4013| 10 | |4|physical_id_4|1|machineid|127.0.0.1|1|@{datetime}|@{datetime}|4014| 11 | |5|physical_id_5|1|machineid|127.0.0.1|1|@{datetime}|@{datetime}|4015| 12 | 13 | |commit| 14 | -------------------------------------------------------------------------------- /admin/doris.admin.service.monitor/src/test/resources/jtester.properties: -------------------------------------------------------------------------------- 1 | database.type=mysql 2 | database.url=jdbc:mysql://localhost:3306/doris_config 3 | database.userName=doris 4 | database.password=doris 5 | database.schemaNames=doris_config 6 | database.driverClassName=com.mysql.jdbc.Driver 7 | -------------------------------------------------------------------------------- /admin/doris.admin.service.monitor/src/test/resources/spring/jdbc.properties: -------------------------------------------------------------------------------- 1 | jdbc.driverClassName=com.mysql.jdbc.Driver 2 | 3 | jdbc.main.url=jdbc:mysql://localhost:3306/doris_config?useUnicode=true&characterEncoding=UTF-8 4 | jdbc.main.username=doris 5 | jdbc.main.password=doris 6 | -------------------------------------------------------------------------------- /admin/doris.admin.service.monitor/src/test/resources/sqlmap-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /admin/doris.admin.service.routeconfig/src/test/resources/dbfit/routeconfig.then.wiki: -------------------------------------------------------------------------------- 1 | |connect| 2 | 3 | |query|select * from PHYSICAL_NODES| 4 | |LOGICAL_ID|PHYSICAL_ID|SERIAL_ID|MACHINE_ID|IP|STATUS|PORT| 5 | |1|physical_id_1|1|machineid|127.0.0.1|1|4011| 6 | |2|physical_id_2|1|machineid|127.0.0.1|2|4012| 7 | |3|physical_id_3|1|machineid|127.0.0.1|1|4013| 8 | |4|physical_id_4|1|machineid|127.0.0.1|2|4014| 9 | |5|physical_id_5|1|machineid|127.0.0.1|1|4015| 10 | |6|physical_id_6|1|machineid|127.0.0.1|2|4016| 11 | |7|physical_id_7|1|machineid|127.0.0.1|2|4017| 12 | 13 | 14 | -------------------------------------------------------------------------------- /admin/doris.admin.service.routeconfig/src/test/resources/dbfit/routeconfig.when.wiki: -------------------------------------------------------------------------------- 1 | |connect| 2 | 3 | |clean table|physical_nodes| 4 | 5 | |insert|physical_nodes| 6 | |LOGICAL_ID|PHYSICAL_ID|SERIAL_ID|MACHINE_ID|IP|STATUS|GMT_CREATE|GMT_MODIFIED|PORT| 7 | |1|physical_id_1|1|machineid|127.0.0.1|1|@{datetime}|@{datetime}|4011| 8 | |2|physical_id_2|1|machineid|127.0.0.1|1|@{datetime}|@{datetime}|4012| 9 | |3|physical_id_3|1|machineid|127.0.0.1|1|@{datetime}|@{datetime}|4013| 10 | |4|physical_id_4|1|machineid|127.0.0.1|1|@{datetime}|@{datetime}|4014| 11 | |5|physical_id_5|1|machineid|127.0.0.1|1|@{datetime}|@{datetime}|4015| 12 | |1|physical_id_6|0|machineid|127.0.0.1|1|@{datetime}|@{datetime}|4016| 13 | |2|physical_id_7|0|machineid|127.0.0.1|1|@{datetime}|@{datetime}|4017| 14 | 15 | 16 | |clean table|config_instances| 17 | 18 | |commit| 19 | 20 | -------------------------------------------------------------------------------- /admin/doris.admin.service.routeconfig/src/test/resources/jtester.properties: -------------------------------------------------------------------------------- 1 | database.type=mysql 2 | database.url=jdbc:mysql://localhost:3306/doris_config 3 | database.userName=doris 4 | database.password=doris 5 | database.schemaNames=doris_config 6 | database.driverClassName=com.mysql.jdbc.Driver 7 | -------------------------------------------------------------------------------- /admin/doris.admin.service.routeconfig/src/test/resources/spring/jdbc.properties: -------------------------------------------------------------------------------- 1 | jdbc.driverClassName=com.mysql.jdbc.Driver 2 | 3 | jdbc.main.url=jdbc:mysql://localhost:3306/doris_config?useUnicode=true&characterEncoding=UTF-8 4 | jdbc.main.username=doris 5 | jdbc.main.password=doris 6 | -------------------------------------------------------------------------------- /admin/doris.admin.service.routeconfig/src/test/resources/sqlmap-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /admin/doris.admin.web.configer/src/main/java/com/alibaba/doris/admin/web/configer/module/screen/NamespaceAdd.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.web.configer.module.screen; 2 | 3 | import com.alibaba.citrus.turbine.Context; 4 | import com.alibaba.doris.admin.core.AdminServiceLocator; 5 | import com.alibaba.doris.admin.service.AdminService; 6 | 7 | public class NamespaceAdd { 8 | 9 | AdminService adminService = AdminServiceLocator.getAdminService(); 10 | 11 | public void execute(Context context) { 12 | boolean isMasterAdmin = adminService.isMasterAdmin(); 13 | context.put("isMasterAdmin", Boolean.toString(isMasterAdmin)); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /admin/doris.admin.web.configer/src/main/java/com/alibaba/doris/admin/web/configer/module/screen/NodeAdd.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.web.configer.module.screen; 2 | 3 | import com.alibaba.citrus.turbine.Context; 4 | import com.alibaba.doris.admin.core.AdminServiceLocator; 5 | import com.alibaba.doris.admin.service.AdminService; 6 | 7 | /** 8 | * @project :Doris 9 | * @author : len.liu 10 | * @datetime : 2011-7-8 下午02:21:25 11 | * @version :0.1 12 | * @Modification: 13 | */ 14 | public class NodeAdd { 15 | 16 | AdminService adminService = AdminServiceLocator.getAdminService(); 17 | 18 | public void execute(Context context) { 19 | boolean isMasterAdmin = adminService.isMasterAdmin(); 20 | context.put("isMasterAdmin", Boolean.toString(isMasterAdmin)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /admin/doris.admin.web.configer/src/main/java/com/alibaba/doris/admin/web/configer/support/NewAddedNodeVO.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.web.configer.support; 2 | 3 | public class NewAddedNodeVO { 4 | 5 | private String isPreview; 6 | 7 | private String[] newNode; 8 | 9 | public String[] getNewNode() { 10 | return newNode; 11 | } 12 | 13 | public void setNewNode(String[] newNode) { 14 | this.newNode = newNode; 15 | } 16 | 17 | public String getIsPreview() { 18 | return isPreview; 19 | } 20 | 21 | public void setIsPreview(String isPreview) { 22 | this.isPreview = isPreview; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /admin/doris.admin.web.configer/src/main/java/com/alibaba/doris/admin/web/configer/support/SequenceForView.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.web.configer.support; 2 | 3 | import java.util.List; 4 | 5 | public class SequenceForView { 6 | 7 | List nodeViewList; 8 | 9 | boolean isSequenceMigrating; 10 | 11 | public List getNodeViewList() { 12 | return nodeViewList; 13 | } 14 | 15 | public void setNodeViewList(List nodeViewList) { 16 | this.nodeViewList = nodeViewList; 17 | } 18 | 19 | public boolean isSequenceMigrating() { 20 | return isSequenceMigrating; 21 | } 22 | 23 | public void setSequenceMigrating(boolean isSequenceMigrating) { 24 | this.isSequenceMigrating = isSequenceMigrating; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /admin/doris.admin.web.configer/src/main/java/com/alibaba/doris/admin/web/monitor/support/PrefMathTool.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.web.monitor.support; 2 | 3 | import java.text.DecimalFormat; 4 | 5 | public class PrefMathTool { 6 | private static final Number NaN = Double.NaN; 7 | 8 | public Object div(Number a, Number b) { 9 | if (a == null || b == null) { 10 | return NaN; 11 | } 12 | DecimalFormat myformat = new DecimalFormat("#0.000"); 13 | return myformat.format(a.doubleValue() / b.doubleValue()); 14 | } 15 | 16 | public Object format(Number a) { 17 | if (a == null) { 18 | return NaN; 19 | } 20 | DecimalFormat myformat = new DecimalFormat("#0.000"); 21 | return myformat.format(a.doubleValue()); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /admin/doris.admin.web.configer/src/main/resources/doris.properties: -------------------------------------------------------------------------------- 1 | #Doris Client Config 2 | #Alibaba.com, Copyright 2011 3 | 4 | #config.server.url = http://doris1.alibaba-inc.com;http://doris2.alibaba-inc.com 5 | 6 | doris.config.adminserver.url=http://127.0.0.1:8087/doris.admin 7 | doris.config.fetch.retrytimes=3 8 | doris.config.fetch.interval=3000 9 | doris.config.connection.timeout=2000 10 | doris.config.connection.socket.timeout=2000 11 | 12 | datasource.class = com.alibaba.doris.client.DefaultDataSourceImpl 13 | 14 | node.configer.class = com.alibaba.doris.common.router.service.RouteTableConfigerImpl 15 | node.route.strategy.class = com.alibaba.doris.common.router.service.RouteStrategyImpl 16 | 17 | route.algorithm.class = com.alibaba.doris.algorithm.ConsistentHashRouteAlglorithm 18 | route.hash.algorithm = SHA -------------------------------------------------------------------------------- /admin/doris.admin.web.configer/src/test/java/com/alibaba/doris/admin/web/configer/util/PhysicalNodeUtilTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.admin.web.configer.util; 2 | 3 | import junit.framework.TestCase; 4 | 5 | public class PhysicalNodeUtilTest extends TestCase { 6 | 7 | public void testIsLegalMigrateNodes() { 8 | String[] newNodes0 = { "10.20.30.40:8000#1#10.20.30.40", "10.20.30.40:8001#2#10.20.30.40" }; 9 | boolean isLegal = PhysicalNodeUtil.isLegalMigrateNodes(newNodes0); 10 | assertEquals(false, isLegal); 11 | String[] newNodes1 = { "10.20.30.40:8000#1#10.20.30.40", "10.20.30.40:8001#1#10.20.30.40" }; 12 | isLegal = PhysicalNodeUtil.isLegalMigrateNodes(newNodes1); 13 | assertEquals(true, isLegal); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /common/doris.client/doris.client.api/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /common/doris.client/doris.client.api/src/main/java/com/alibaba/doris/client/DorisRouteVersionException.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.client; 2 | 3 | /** 4 | * Doris路由版本异常 5 | * 6 | * @author frank 7 | */ 8 | public class DorisRouteVersionException extends AccessException { 9 | 10 | private static final long serialVersionUID = 1904274069223034480L; 11 | 12 | public DorisRouteVersionException() { 13 | super(); 14 | } 15 | 16 | public DorisRouteVersionException(String message) { 17 | super(message); 18 | } 19 | 20 | public DorisRouteVersionException(String message, Throwable t) { 21 | super(message, t); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /common/doris.client/doris.client.api/src/test/java/AppTest.java: -------------------------------------------------------------------------------- 1 | 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /common/doris.client/doris.client/dataserver.error.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/common/doris.client/doris.client/dataserver.error.log -------------------------------------------------------------------------------- /common/doris.client/doris.client/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /common/doris.client/doris.client/src/test/resources/doris-client.properties: -------------------------------------------------------------------------------- 1 | #Doris Client Config 2 | #Alibaba.com, Copyright 2011 3 | 4 | doris.config.adminserver.main.url=http://doris-test.alibaba-inc.com/doris.admin 5 | doris.config.adminserver.backup.url=http://doris-test.alibaba-inc.com/doris.admin 6 | 7 | doris.username=doris 8 | doris.password=doris 9 | #doris.config.client.operation.timeout=1000 10 | -------------------------------------------------------------------------------- /common/doris.client/doris.tools.deploy/src/bin/clientDataMaker: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # preserve current working directory 4 | cd `dirname $0`/.. 5 | BASE=`pwd` 6 | 7 | LIBCLASSPATH=`echo $BASE/lib/*.jar | tr ' ' ':'` 8 | export CLASSPATH=$LIBCLASSPATH:$BASE/conf 9 | 10 | if [ "$LOG_CONFIG" = "" ]; then 11 | LOG_CONFIG="$BASE/conf/log4j.xml" 12 | fi 13 | 14 | [ -n "$LOGROOT"] && LOGROOT="log" 15 | 16 | JAVA_OPTS="-Xmx512m -Dlog4j.config=$LOG_CONFIG -DlogRoot=log -DlogLevel=ERROR" 17 | 18 | java $JAVA_OPTS com.alibaba.doris.client.tools.datamaker.ClientDataMakerTool $* 19 | 20 | #usage: clientDataMaker -config doris-client.properties -ns StringName -kp abc -vp vvv -s 0 -e 1000 -c 10 -p true -------------------------------------------------------------------------------- /common/doris.client/doris.tools.deploy/src/bin/clientcheck: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # preserve current working directory 4 | cd `dirname $0`/.. 5 | BASE=`pwd` 6 | 7 | LIBCLASSPATH=`echo $BASE/lib/*.jar | tr ' ' ':'` 8 | export CLASSPATH=$LIBCLASSPATH:$BASE/conf 9 | 10 | if [ "$LOG_CONFIG" = "" ]; then 11 | LOG_CONFIG="$BASE/conf/log4j.xml" 12 | fi 13 | 14 | [ -n "$LOGROOT"] && LOGROOT="log" 15 | 16 | JAVA_OPTS="-Xmx64m -Dlog4j.config=$LOG_CONFIG -DlogRoot=log" 17 | 18 | java $JAVA_OPTS com.alibaba.doris.client.tools.ClientCheckTool $* 19 | 20 | #clientcheck -c /home/doris/doris-client.properties -ns namespace2 -o put -k test -v test -------------------------------------------------------------------------------- /common/doris.client/doris.tools.deploy/src/bin/datacheck: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # preserve current working directory 4 | cd `dirname $0`/.. 5 | BASE=`pwd` 6 | 7 | LIBCLASSPATH=`echo $BASE/lib/*.jar | tr ' ' ':'` 8 | export CLASSPATH=$LIBCLASSPATH:$BASE/conf 9 | 10 | if [ "$LOG_CONFIG" = "" ]; then 11 | LOG_CONFIG="$BASE/conf/log4j.xml" 12 | fi 13 | 14 | [ -n "$LOGROOT"] && LOGROOT="log" 15 | 16 | JAVA_OPTS="-Xmx64m -Dlog4j.config=$LOG_CONFIG -DlogRoot=log" 17 | 18 | java $JAVA_OPTS com.alibaba.doris.client.tools.DataCheckTool $* 19 | 20 | #datacheck -c /home/doris/doris-client.properties -ns namespace2 -k test -------------------------------------------------------------------------------- /common/doris.client/doris.tools.deploy/src/bin/nodeDataMaker: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # preserve current working directory 4 | cd `dirname $0`/.. 5 | BASE=`pwd` 6 | 7 | LIBCLASSPATH=`echo $BASE/lib/*.jar | tr ' ' ':'` 8 | export CLASSPATH=$LIBCLASSPATH:$BASE/conf 9 | 10 | if [ "$LOG_CONFIG" = "" ]; then 11 | LOG_CONFIG="$BASE/conf/log4j.xml" 12 | fi 13 | 14 | [ -n "$LOGROOT"] && LOGROOT="log" 15 | 16 | JAVA_OPTS="-Xmx512m -Dlog4j.config=$LOG_CONFIG -DlogRoot=log -DlogLevel=ERROR" 17 | 18 | java $JAVA_OPTS com.alibaba.doris.client.tools.datamaker.NodeDataMakerTool $* 19 | 20 | #usage: nodeDataMaker -ip 127.0.0.1 -port 9001 -vn 1000 -kp 101:kkk -vp vvv -s 0 -e 1000 -c 5 -p true -------------------------------------------------------------------------------- /common/doris.client/doris.tools.deploy/src/bin/nodecheck: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # preserve current working directory 4 | cd `dirname $0`/.. 5 | BASE=`pwd` 6 | 7 | LIBCLASSPATH=`echo $BASE/lib/*.jar | tr ' ' ':'` 8 | export CLASSPATH=$LIBCLASSPATH:$BASE/conf 9 | 10 | 11 | if [ "$LOG_CONFIG" = "" ]; then 12 | LOG_CONFIG="$BASE/conf/log4j.xml" 13 | fi 14 | 15 | [ -n "$LOGROOT"] && LOGROOT="log" 16 | 17 | JAVA_OPTS="-Xmx64m -Dlog4j.config=$LOG_CONFIG -DlogRoot=log" 18 | 19 | 20 | 21 | 22 | java $JAVA_OPTS com.alibaba.doris.client.tools.NodeCheckTool $* 23 | 24 | #nodecheck -ip 10.20.144.91 -port 9000 -vn 10000 -o get -k 24:aaabbb -------------------------------------------------------------------------------- /common/doris.client/doris.tools.deploy/src/conf/doris-client.properties: -------------------------------------------------------------------------------- 1 | #Doris Client Config 2 | #Alibaba.com, Copyright 2011 3 | 4 | doris.config.adminserver.main.url=http://doris-test.alibaba-inc.com:8087/doris.admin 5 | doris.config.adminserver.backup.url=http://doris-test.alibaba-inc.com:8087/doris.admin 6 | 7 | doris.username=doris 8 | doris.password=doris 9 | 10 | -------------------------------------------------------------------------------- /common/doris.client/doris.tools/src/test/java/doris-client.properties: -------------------------------------------------------------------------------- 1 | #Doris Client Config 2 | #Alibaba.com, Copyright 2011 3 | 4 | doris.config.adminserver.main.url=http://doris-test.alibaba-inc.com:8087/doris.admin 5 | doris.config.adminserver.backup.url=http://doris-test.alibaba-inc.com:8087/doris.admin 6 | 7 | doris.username=doris 8 | doris.password=doris 9 | 10 | -------------------------------------------------------------------------------- /common/doris.common/doris.algorithm/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | 5 | com.alibaba.platform.shared 6 | doris.shared.parent 7 | 0.1.6.2 8 | ../../pom.xml 9 | 10 | com.alibaba.platform.shared 11 | doris.algorithm 12 | jar 13 | doris.algorithm 14 | http://maven.apache.org 15 | 16 | UTF-8 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /common/doris.common/doris.algorithm/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /common/doris.common/doris.algorithm/src/main/java/com/alibaba/doris/algorithm/HashFunction.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.algorithm; 2 | 3 | /** 4 | * 5 | * HashFunction 6 | * @author Kun He (Raymond He), kun.hek@alibaba-inc.com 7 | * @since 1.0 2011-4-7 8 | */ 9 | public interface HashFunction { 10 | int hash(String o); 11 | } 12 | -------------------------------------------------------------------------------- /common/doris.common/doris.aop/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /common/doris.common/doris.aop/src/main/java/com/alibaba/doris/dproxy/AbstractInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dproxy; 2 | 3 | 4 | /** 5 | * 6 | * AbstractInterceptor 7 | *
Description: class AbstractInterceptor 8 | *
Company: Alibaba, Hangzhou
9 | * @author He Kun 10 | * @since 1.0 11 | * @version 1.0 12 | * 2006-4-19 13 | */ 14 | public abstract class AbstractInterceptor implements Interceptor { 15 | 16 | public void before(InvokeInfo info) throws Throwable { 17 | } 18 | 19 | public void after(InvokeInfo info) throws Throwable { 20 | } 21 | 22 | public void exceptionThrow(InvokeInfo info) throws Throwable { 23 | throw info.getException(); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /common/doris.common/doris.aop/src/main/java/com/alibaba/doris/dproxy/Interceptor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @author He Kun (Henry He), Guangzhou, China 3 | * 2006-4-19 4 | */ 5 | package com.alibaba.doris.dproxy; 6 | 7 | /** 8 | * Interceptor 9 | *
Description: class Interceptor 10 | *
Company: Alibaba, Hangzhou
11 | * @author He Kun 12 | * @since 1.0 13 | * @version 1.0 14 | * 2006-4-19 15 | */ 16 | public interface Interceptor { 17 | 18 | void before(InvokeInfo info) throws Throwable; 19 | 20 | void after(InvokeInfo info) throws Throwable; 21 | 22 | void exceptionThrow(InvokeInfo info) throws Throwable; 23 | } 24 | -------------------------------------------------------------------------------- /common/doris.common/doris.aop/src/main/java/com/alibaba/doris/dproxy/interceptor/MethodCheckInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dproxy.interceptor; 2 | 3 | import java.util.logging.Logger; 4 | 5 | import com.alibaba.doris.dproxy.AbstractInterceptor; 6 | import com.alibaba.doris.dproxy.InvokeInfo; 7 | 8 | /** 9 | * e 10 | * LogInterceptor 11 | * @author Kun He (Raymond He), kun.hek@alibaba-inc.com 12 | * @since 1.0 2011-4-29 13 | */ 14 | public class MethodCheckInterceptor extends AbstractInterceptor { 15 | 16 | /** 17 | * 18 | */ 19 | public void before(InvokeInfo info) throws Throwable { 20 | super.before(info); 21 | 22 | } 23 | 24 | 25 | public void after(InvokeInfo info) throws Throwable { 26 | super.after(info); 27 | info.setResult("[MC]" + info.getResult() ); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /common/doris.common/doris.aop/src/test/java/com/alibaba/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /common/doris.common/doris.aop/src/test/java/common-aop.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /common/doris.common/doris.client.net/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /common/doris.common/doris.client.net/src/main/java/com/alibaba/doris/client/net/NetException.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.client.net; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public class NetException extends RuntimeException { 7 | 8 | private static final long serialVersionUID = 1496974586218389057L; 9 | 10 | public NetException() { 11 | 12 | } 13 | 14 | /** 15 | * @param message 16 | */ 17 | public NetException(String message) { 18 | super(message); 19 | } 20 | 21 | /** 22 | * @param cause 23 | */ 24 | public NetException(Throwable cause) { 25 | super(cause); 26 | } 27 | 28 | /** 29 | * @param message 30 | * @param cause 31 | */ 32 | public NetException(String message, Throwable cause) { 33 | super(message, cause); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /common/doris.common/doris.client.net/src/main/java/com/alibaba/doris/client/net/OperationFuture.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.client.net; 2 | 3 | import java.util.concurrent.Future; 4 | 5 | 6 | /** 7 | * @author ajun Email:jack.yuj@alibaba-inc.com 8 | */ 9 | public interface OperationFuture extends Future { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /common/doris.common/doris.client.net/src/main/java/com/alibaba/doris/client/net/command/Command.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.client.net.command; 2 | 3 | import com.alibaba.doris.client.net.OperationFuture; 4 | import com.alibaba.doris.client.net.protocol.ProtocolParser; 5 | 6 | /** 7 | * @author ajun Email:jack.yuj@alibaba-inc.com 8 | */ 9 | public interface Command { 10 | 11 | public void complete(); 12 | 13 | public OperationFuture getResultFuture(); 14 | 15 | public ProtocolParser getProtocolParser(); 16 | 17 | public V getResult(); 18 | } 19 | -------------------------------------------------------------------------------- /common/doris.common/doris.client.net/src/main/java/com/alibaba/doris/client/net/command/CompareAndSetCommand.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.client.net.command; 2 | 3 | import com.alibaba.doris.common.data.Key; 4 | import com.alibaba.doris.common.data.Value; 5 | 6 | /** 7 | * @author ajun Email:jack.yuj@alibaba-inc.com 8 | */ 9 | public class CompareAndSetCommand extends SetCommand { 10 | 11 | public CompareAndSetCommand(Key key, Value value) { 12 | super(key, value); 13 | } 14 | 15 | @Override 16 | public boolean isCas() { 17 | return true; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /common/doris.common/doris.client.net/src/main/java/com/alibaba/doris/client/net/command/ErrorType.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.client.net.command; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public enum ErrorType { 7 | CLIENT_ERROR, SERVER_ERROR, VERSION_OUT_OF_DATE, CONNECTION, UNKNOWN 8 | } 9 | -------------------------------------------------------------------------------- /common/doris.common/doris.client.net/src/main/java/com/alibaba/doris/client/net/command/result/CheckResult.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.client.net.command.result; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public interface CheckResult { 7 | 8 | public boolean isSuccess(); 9 | 10 | public String getMessage(); 11 | } 12 | -------------------------------------------------------------------------------- /common/doris.common/doris.client.net/src/main/java/com/alibaba/doris/client/net/netty/DorisClentNettyPipelineFactory.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.client.net.netty; 2 | 3 | import static org.jboss.netty.channel.Channels.pipeline; 4 | 5 | import org.jboss.netty.channel.ChannelPipeline; 6 | import org.jboss.netty.channel.ChannelPipelineFactory; 7 | 8 | /** 9 | * @author ajun Email:jack.yuj@alibaba-inc.com 10 | */ 11 | public class DorisClentNettyPipelineFactory implements ChannelPipelineFactory { 12 | 13 | public ChannelPipeline getPipeline() throws Exception { 14 | ChannelPipeline pipeline = pipeline(); 15 | pipeline.addLast("codec", new DorisClientEncodeAndDecodeHandler()); 16 | pipeline.addLast("handler", new DorisClientHandler()); 17 | return pipeline; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /common/doris.common/doris.client.net/src/main/java/com/alibaba/doris/client/net/protocol/ProtocolParser.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.client.net.protocol; 2 | 3 | import org.jboss.netty.buffer.ChannelBuffer; 4 | 5 | import com.alibaba.doris.client.net.command.Command; 6 | 7 | /** 8 | * 这里不得已暂时依赖了netty中的ChannelBuffer。 9 | * 10 | * @author ajun Email:jack.yuj@alibaba-inc.com 11 | */ 12 | public interface ProtocolParser { 13 | 14 | public void encode(Command commandData, ChannelBuffer buffer); 15 | 16 | public boolean decode(Command commandData, ChannelBuffer buffer); 17 | } 18 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/main/java/com/alibaba/doris/common/adminservice/CheckFailService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.adminservice; 2 | 3 | import com.alibaba.doris.common.StoreNode; 4 | 5 | 6 | public interface CheckFailService { 7 | 8 | /** 9 | * 10 | * @param sn 11 | * @return true 节点可用,false 节点不可用 12 | */ 13 | boolean checkFailNode(StoreNode sn); 14 | } 15 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/main/java/com/alibaba/doris/common/adminservice/CommonConfigService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.adminservice; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | public interface CommonConfigService { 7 | 8 | /** 9 | * 取得比当前版本号更新的配置 10 | */ 11 | Map getConfig(Map paras); 12 | 13 | /** 14 | * 强制刷新配置 15 | * 16 | */ 17 | Map getConfig(List paras); 18 | } 19 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/main/java/com/alibaba/doris/common/adminservice/ConsistentErrorReportService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.adminservice; 2 | 3 | import com.alibaba.doris.common.ConsistentErrorType; 4 | 5 | /** 6 | * 向admin报告一致性问题 7 | * 8 | * @author zhw 9 | */ 10 | public interface ConsistentErrorReportService { 11 | 12 | /** 13 | * @param namespaceId 14 | * @param key 15 | * @param phisicalIps 物理节点ip列表(带端口号),中间以";"分隔 16 | * @param exceptionMsg 异常消息 17 | * @param errorType 出错类型 18 | * @param timestamp, value的时间戳 19 | * @return 20 | */ 21 | Boolean report(int namespaceId, String key, String phisicalIps, String exceptionMsg, ConsistentErrorType errorType, 22 | String timestamp); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/main/java/com/alibaba/doris/common/adminservice/MigrateReportService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.adminservice; 2 | 3 | import com.alibaba.doris.common.MigrateStatusEnum; 4 | 5 | /** 6 | * 迁移状态报告service 7 | * 8 | * @author frank 9 | */ 10 | public interface MigrateReportService { 11 | 12 | /** 13 | * data server 向admin server报告迁移状态 14 | * 15 | * @param srcPhysicalId 迁出的节点物理编号 16 | * @param targetPhysicalId 迁入的节点物理编号(如果是扩容迁移,该编号为null) 17 | * @param schedule 迁移进度,未开始:0;完成:100;迁移中:介于1到100的整数;迁移发生错误:-1 18 | * @return 19 | */ 20 | String report(String srcPhysicalId, String targetPhysicalId, int schedule,MigrateStatusEnum status,String message); 21 | } 22 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/main/java/com/alibaba/doris/common/adminservice/MonitorService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.adminservice; 2 | 3 | import java.util.List; 4 | 5 | import com.alibaba.doris.common.PrefReportUnit; 6 | 7 | public interface MonitorService { 8 | 9 | String report(List report, int port); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/main/java/com/alibaba/doris/common/adminservice/NamespaceService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.adminservice; 2 | 3 | import java.util.Map; 4 | 5 | import com.alibaba.doris.common.Namespace; 6 | 7 | 8 | 9 | public interface NamespaceService { 10 | 11 | Namespace fetchNameSpace(String nameSpace); 12 | Map fetchNameSpace(); 13 | } 14 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/main/java/com/alibaba/doris/common/adminservice/PostMigrateReportService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.adminservice; 2 | 3 | import com.alibaba.doris.common.MigrateStatusEnum; 4 | 5 | /** 6 | * 迁移结束后处理过程报告服务 7 | * @author frank 8 | * 9 | */ 10 | public interface PostMigrateReportService { 11 | /** 12 | * data server 向admin server报告迁移结束后处理过程状态 13 | * 14 | * @param physicalId 后处理中节点物理编号 15 | * @param schedule 后处理迁移进度百分比整数值 16 | * @param message 附加信息 17 | * @return 18 | */ 19 | String report(String physicalPort, int schedule,MigrateStatusEnum status,String message); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/main/java/com/alibaba/doris/common/adminservice/RouterConfigService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.adminservice; 2 | 3 | 4 | public interface RouterConfigService { 5 | 6 | String getRouteConfig(); 7 | 8 | String getRouteConfig(long version); 9 | } 10 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/main/java/com/alibaba/doris/common/adminservice/StoreNodeService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.adminservice; 2 | 3 | import com.alibaba.doris.common.StoreNode; 4 | 5 | public interface StoreNodeService { 6 | 7 | StoreNode getStoreNode(String physicalId); 8 | } 9 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/main/java/com/alibaba/doris/common/adminservice/UserAuthService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.adminservice; 2 | 3 | public interface UserAuthService { 4 | public int getUserAuth(String userName, String password); 5 | } 6 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/main/java/com/alibaba/doris/common/adminservice/VirtualNumberService.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.adminservice; 2 | 3 | public interface VirtualNumberService { 4 | 5 | int getVirtualNumber(); 6 | } 7 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/main/java/com/alibaba/doris/common/adminservice/connenctor/AdminConnectionException.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.adminservice.connenctor; 2 | 3 | public class AdminConnectionException extends Exception { 4 | 5 | public AdminConnectionException(String message) { 6 | super(message); 7 | } 8 | 9 | /** 10 | * 11 | */ 12 | private static final long serialVersionUID = 567000011990346035L; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.adminservice/src/test/resources/dorisconfig.properties: -------------------------------------------------------------------------------- 1 | doris.config.adminserver.main.url=http://10.20.157.187:8087/doris.admin 2 | doris.config.adminserver.backup.url=http://10.20.157.187:8087/doris.admin 3 | #doris.config.adminserver.url=http://10.16.48.47:8087/doris.admin 4 | doris.config.fetch.retrytimes=3 5 | doris.config.fetch.interval=3000 6 | doris.config.connection.timeout=2000 7 | doris.config.connection.socket.timeout=2000 -------------------------------------------------------------------------------- /common/doris.common/doris.common.config/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.config/src/test/java/com/alibaba/doris/dorisconfig.properties: -------------------------------------------------------------------------------- 1 | doris.config.adminserver.url=http://127.0.0.1:8118/doris.config 2 | doris.config.fetch.retrytimes=3 3 | doris.config.fetch.interval=3000 4 | doris.config.connection.timeout=2000 5 | doris.config.connection.socket.timeout=2000 -------------------------------------------------------------------------------- /common/doris.common/doris.common.model/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | 5 | com.alibaba.platform.shared 6 | doris.shared.parent 7 | 0.1.6.2 8 | ../../pom.xml 9 | 10 | com.alibaba.platform.shared 11 | doris.common.model 12 | jar 13 | doris.common.model 14 | http://maven.apache.org 15 | 16 | UTF-8 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.model/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.model/src/main/java/com/alibaba/doris/common/data/ActionPair.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.data; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public interface ActionPair extends Pair { 7 | 8 | public Type getActionType(); 9 | 10 | public enum Type { 11 | SET, DELETE 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.model/src/main/java/com/alibaba/doris/common/data/CompareStatus.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.data; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public enum CompareStatus { 7 | BEFORE, EQUALS, AFTER 8 | } 9 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.model/src/main/java/com/alibaba/doris/common/data/KeyFactory.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.data; 2 | 3 | import com.alibaba.doris.common.data.impl.KeyImpl; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class KeyFactory { 9 | 10 | public static Key createKey(byte[] physicalKeyBytes, int vnode) { 11 | return new KeyImpl(physicalKeyBytes, vnode); 12 | } 13 | 14 | public static Key createKey(int namespace, String key, long routeVersion, int vnode) { 15 | return new KeyImpl(namespace, key, routeVersion, vnode); 16 | } 17 | 18 | public static Key createKey(int namespace, String key) { 19 | return new KeyImpl(namespace, key); 20 | } 21 | 22 | public static Key createKey(int namespace, String key, int vnode) { 23 | return new KeyImpl(namespace, key, vnode); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.model/src/main/java/com/alibaba/doris/common/data/Pair.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.data; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public interface Pair { 7 | 8 | public Key getKey(); 9 | 10 | public Value getValue(); 11 | } 12 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.model/src/main/java/com/alibaba/doris/common/data/ValueFactory.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.data; 2 | 3 | import com.alibaba.doris.common.data.impl.ByteWrapperValueImpl; 4 | import com.alibaba.doris.common.data.impl.ValueImpl; 5 | 6 | /** 7 | * @author ajun Email:jack.yuj@alibaba-inc.com 8 | */ 9 | public class ValueFactory { 10 | 11 | public static Value createValue(ByteWrapper valueBytesWrapper, short flag, long timestamp) { 12 | return new ByteWrapperValueImpl(valueBytesWrapper, flag, timestamp); 13 | } 14 | 15 | public static Value createValue(byte[] valueBytes, short flag, long timestamp) { 16 | Value value = new ValueImpl(valueBytes, timestamp); 17 | value.setFlag(flag); 18 | return value; 19 | } 20 | 21 | public static Value createValue(byte[] valueBytes, long timestamp) { 22 | return new ValueImpl(valueBytes, timestamp); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.model/src/main/java/com/alibaba/doris/common/data/impl/ActionPairImpl.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.data.impl; 2 | 3 | import com.alibaba.doris.common.data.ActionPair; 4 | import com.alibaba.doris.common.data.Key; 5 | import com.alibaba.doris.common.data.Value; 6 | 7 | /** 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public class ActionPairImpl extends PairImpl implements ActionPair { 11 | 12 | public ActionPairImpl(Type type, Key key, Value value) { 13 | super(key, value); 14 | this.type = type; 15 | } 16 | 17 | public Type getActionType() { 18 | return type; 19 | } 20 | 21 | private Type type; 22 | } 23 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.model/src/main/java/com/alibaba/doris/common/data/impl/PairImpl.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.data.impl; 2 | 3 | import com.alibaba.doris.common.data.Key; 4 | import com.alibaba.doris.common.data.Pair; 5 | import com.alibaba.doris.common.data.Value; 6 | 7 | /** 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public class PairImpl implements Pair { 11 | 12 | public PairImpl(Key key, Value value) { 13 | this.key = key; 14 | this.value = value; 15 | } 16 | 17 | public Key getKey() { 18 | return key; 19 | } 20 | 21 | public Value getValue() { 22 | return value; 23 | } 24 | 25 | private Key key; 26 | private Value value; 27 | } 28 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.model/src/main/java/com/alibaba/doris/common/data/util/FlagUtils.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.data.util; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public class FlagUtils { 7 | 8 | public static boolean isCompressed(short flag) { 9 | return (FLAG_COMPRESS & flag) != 0; 10 | } 11 | 12 | public static short setCompressed(short flag) { 13 | flag |= FLAG_COMPRESS; 14 | return flag; 15 | } 16 | 17 | public static boolean isContainVnode(short flag) { 18 | return (FLAG_CONTAIN_VNODE & flag) != 0; 19 | } 20 | 21 | public static short setContainVnode(short flag) { 22 | flag |= FLAG_CONTAIN_VNODE; 23 | return flag; 24 | } 25 | 26 | private static final short FLAG_COMPRESS = 0x0001; 27 | private static final short FLAG_CONTAIN_VNODE = 0x4001; 28 | } 29 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.model/src/test/java/com/alibaba/doris/common/data/util/FlagUtilsTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.data.util; 2 | 3 | import junit.framework.TestCase; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class FlagUtilsTest extends TestCase { 9 | 10 | public void testCompress() { 11 | short flag = 0; 12 | flag = FlagUtils.setCompressed(flag); 13 | assertFalse(0 == flag); 14 | assertTrue(FlagUtils.isCompressed(flag)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.route/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.route/src/test/java/com/alibaba/doris/common/route/VirtualRouteTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.route; 2 | 3 | import junit.framework.TestCase; 4 | 5 | /** 6 | * 7 | * VirtualRouteTest 8 | * @author Kun He (Raymond He), kun.hek@alibaba-inc.com 9 | * @since 1.0 2011-6-16 10 | */ 11 | public class VirtualRouteTest extends TestCase{ 12 | 13 | public void testGet(){ 14 | VirtualRouter virtualRouter = new MockVirtualRouter(); 15 | 16 | int vNo = virtualRouter.findVirtualNode("a2"); 17 | System.out.println("VNo of key 'a2':" + vNo); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.tools/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | 5 | com.alibaba.platform.shared 6 | doris.shared.parent 7 | 0.1.6.2 8 | ../../pom.xml 9 | 10 | com.alibaba.platform.shared 11 | doris.common.tools 12 | jar 13 | doris.common.tools 14 | http://maven.apache.org 15 | 16 | UTF-8 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.tools/src/main/java/com/alibaba/doris/client/tools/concurrent/AtomTask.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.alibaba.doris.client.tools.concurrent; 5 | 6 | /** 7 | * @author raymond 8 | * 9 | */ 10 | public interface AtomTask { 11 | 12 | void setIndex(long index) ; 13 | 14 | long getIndex(); 15 | 16 | void doRun(long index); 17 | } 18 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.tools/src/main/java/com/alibaba/doris/client/tools/concurrent/AtomTaskImpl.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.alibaba.doris.client.tools.concurrent; 5 | 6 | /** 7 | * @author raymond 8 | * 9 | */ 10 | public class AtomTaskImpl implements AtomTask { 11 | 12 | private long index; 13 | /** 14 | * @see com.alibaba.doris.client.tools.concurrent.AtomTask#getIndex() 15 | */ 16 | public long getIndex() { 17 | return index; 18 | } 19 | 20 | /** 21 | * @see com.alibaba.doris.client.tools.concurrent.AtomTask#setIndex(long) 22 | */ 23 | public void setIndex(long index) { 24 | this.index = index; 25 | } 26 | 27 | public void doRun(long index) { 28 | System.out.println("AtomTask.doRun->" + index); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.tools/src/main/java/com/alibaba/doris/client/tools/concurrent/ParralelDemo.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.alibaba.doris.client.tools.concurrent; 5 | 6 | 7 | /** 8 | * @author raymond 9 | * 10 | */ 11 | public class ParralelDemo { 12 | 13 | public static void main(String[] args) { 14 | int start = 0; 15 | int end = 1000; 16 | int concurrent = 10; 17 | boolean needProfiling = true; 18 | ParralelExecutor executor = new ParralelExecutorImpl(start,end, concurrent, needProfiling , ParralelTaskImpl.class); 19 | executor.setNeedPofiling( true ); 20 | executor.start(); 21 | 22 | Object result; 23 | try { 24 | result = executor.getResult(); 25 | System.out.println("result: " + result ); 26 | } catch(Exception e) { 27 | } 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.tools/src/main/java/com/alibaba/doris/client/tools/concurrent/ParralelExecutor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.alibaba.doris.client.tools.concurrent; 5 | 6 | /** 7 | * @author raymond 8 | * 9 | */ 10 | public interface ParralelExecutor { 11 | 12 | public int getStart(); 13 | 14 | public void setStart(int start); 15 | 16 | public int getEnd(); 17 | 18 | public void setEnd(int end); 19 | 20 | public int getConcurrent(); 21 | 22 | public void setConcurrent(int concurrent); 23 | 24 | public boolean isNeedPofiling(); 25 | 26 | public void setNeedPofiling(boolean needPofiling); 27 | 28 | public void start(); 29 | 30 | public Object getResult(); 31 | 32 | public void setParralelTaskFactory(ParralelTaskFactory parralelTaskFactory); 33 | 34 | public PermMeter getPermMeter(); 35 | } 36 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.tools/src/main/java/com/alibaba/doris/client/tools/concurrent/Range.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.alibaba.doris.client.tools.concurrent; 5 | 6 | /** 7 | * @author raymond 8 | * 9 | */ 10 | public class Range { 11 | 12 | private long start; 13 | private long end; 14 | 15 | public Range( long start, long end) { 16 | this.start = start; 17 | this.end = end; 18 | } 19 | public long getStart() { 20 | return start; 21 | } 22 | public void setStart(long start) { 23 | this.start = start; 24 | } 25 | public long getEnd() { 26 | return end; 27 | } 28 | public void setEnd(long end) { 29 | this.end = end; 30 | } 31 | 32 | 33 | } 34 | -------------------------------------------------------------------------------- /common/doris.common/doris.common.tools/src/test/java/com/alibaba/platform/app/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.platform.app; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/main/java/com/alibaba/doris/common/ConsistentErrorType.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common; 2 | 3 | public enum ConsistentErrorType { 4 | read, write; 5 | } 6 | -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/main/java/com/alibaba/doris/common/MigrateTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common; 2 | /** 3 | * 迁移类型 4 | * @author frank 5 | * 6 | */ 7 | public enum MigrateTypeEnum { 8 | 9 | TEMP_FAILOVER("temp_failover",0), 10 | 11 | FOREVER_FAILOVER("forever_failover",1), 12 | 13 | EXPANSION("expansion",2), 14 | 15 | DATACLEAN("dataclean", 9), 16 | 17 | NONE("none",-1); 18 | 19 | private String value; 20 | private int priority; 21 | 22 | private MigrateTypeEnum(String value,int priority) { 23 | this.value = value; 24 | this.priority = priority; 25 | } 26 | 27 | public String getValue() { 28 | return value; 29 | } 30 | 31 | public int getPriority() { 32 | return priority; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/main/java/com/alibaba/doris/common/RealtimeInfo.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common; 2 | 3 | import java.util.List; 4 | 5 | public class RealtimeInfo { 6 | 7 | private int upTime; 8 | 9 | private List prefReports; 10 | 11 | public int getUpTime() { 12 | return upTime; 13 | } 14 | 15 | public void setUpTime(int upTime) { 16 | this.upTime = upTime; 17 | } 18 | 19 | public List getPrefReports() { 20 | return prefReports; 21 | } 22 | 23 | public void setPrefReports(List prefReports) { 24 | this.prefReports = prefReports; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/main/java/com/alibaba/doris/common/config/ClientConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.config; 2 | 3 | /* 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public class ClientConfiguration { 7 | 8 | public long getTimeoutOfOperation() { 9 | return timeoutOfOperation; 10 | } 11 | 12 | public void setTimeoutOfOperation(long timeoutOfOperation) { 13 | this.timeoutOfOperation = timeoutOfOperation; 14 | } 15 | 16 | private long timeoutOfOperation = DEFAULT_TIME_OUT; // ms 17 | private static long DEFAULT_TIME_OUT = 10000; // the default value is 10 seconds 18 | } 19 | -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/main/java/com/alibaba/doris/common/config/ConfigListener.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.config; 2 | 3 | /** 4 | * 此接口用于接收 Doris的配置变更。 5 | * 6 | * @see ConfigManagerImpl 7 | * @author mianhe 8 | */ 9 | public interface ConfigListener { 10 | 11 | public String getConfigListenerName(); 12 | 13 | public Long getConfigVersion(); 14 | 15 | /** 16 | * 配置变更的时候调用此方法 17 | */ 18 | public void onConfigChange(String configContent); 19 | } 20 | -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/main/java/com/alibaba/doris/common/constants/CompressModeEnum.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.constants; 2 | 3 | /** 4 | * @project :Doris 5 | * @author : len.liu 6 | * @datetime : 2011-5-23 下午10:09:41 7 | * @version :0.1 8 | * @Modification: 9 | */ 10 | public enum CompressModeEnum { 11 | ZIP("zip"); 12 | 13 | private String value; 14 | 15 | private CompressModeEnum(String value) { 16 | this.value = value; 17 | } 18 | 19 | /** 返回常量字符串 */ 20 | public String getValue() { 21 | return value; 22 | } 23 | 24 | /** 根据字符串得到Enum类型,区分大小写,如果没有匹配成功则返回null */ 25 | public static CompressModeEnum getTypeByValue(int value) { 26 | for (CompressModeEnum type : values()) { 27 | if (type.getValue().equals(value)) { 28 | return type; 29 | } 30 | } 31 | return null; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/main/java/com/alibaba/doris/common/constants/SerializeModeEnum.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.constants; 2 | 3 | /** 4 | * @project :Doris 5 | * @author : len.liu 6 | * @datetime : 2011-5-23 下午10:09:31 7 | * @version :0.1 8 | * @Modification: 9 | */ 10 | public enum SerializeModeEnum { 11 | JSON("json"); 12 | 13 | private String value; 14 | 15 | private SerializeModeEnum(String value) { 16 | this.value = value; 17 | } 18 | 19 | /** 返回常量字符串 */ 20 | public String getValue() { 21 | return value; 22 | } 23 | 24 | /** 根据字符串得到Enum类型,区分大小写,如果没有匹配成功则返回null */ 25 | public static SerializeModeEnum getTypeByValue(int value) { 26 | for (SerializeModeEnum type : values()) { 27 | if (type.getValue().equals(value)) { 28 | return type; 29 | } 30 | } 31 | return null; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/main/java/com/alibaba/doris/common/operation/OperationEnum.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.operation; 2 | 3 | public enum OperationEnum { 4 | 5 | READ, WRITE, MIGERATE, 6 | /** 7 | * 多读,应用在客户端要求强一致性的场景 8 | */ 9 | MULTIREAD; 10 | } 11 | -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/main/java/com/alibaba/doris/common/route/DorisRouterException.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.route; 2 | 3 | /** 4 | * Doris 路由器异常 5 | * 6 | * @author frank 7 | */ 8 | public class DorisRouterException extends Exception { 9 | 10 | private static final long serialVersionUID = -6107089180585916432L; 11 | 12 | public DorisRouterException() { 13 | super(); 14 | } 15 | 16 | public DorisRouterException(String message) { 17 | super(message); 18 | } 19 | 20 | public DorisRouterException(String message, Throwable t) { 21 | super(message, t); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/main/java/com/alibaba/doris/common/route/VirtualRouter.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.route; 2 | 3 | 4 | /** 5 | * 虚拟节点路由器,根据key返回虚拟节点编号
6 | * 用于data server,根据虚拟节点写不同存储文件 7 | * 8 | * @author frank, 9 | * @author kun.hek Abstract a interface. 10 | */ 11 | public interface VirtualRouter { 12 | 13 | public int getVirtualNum(); 14 | 15 | public int findVirtualNode(String key); 16 | } 17 | -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/test/java/com/alibaba/doris/common/util/PropertiesLoadUtilTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.util; 2 | 3 | import java.util.Properties; 4 | 5 | import junit.framework.TestCase; 6 | 7 | import org.junit.Test; 8 | 9 | public class PropertiesLoadUtilTest extends TestCase { 10 | 11 | @Test 12 | public void testProperty() { 13 | Properties properties = PropertiesLoadUtil.loadProperties("./test/test/test/testp.properties"); 14 | assertEquals("value1", properties.get("key1")); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/test/java/com/alibaba/doris/common/util/test/test/test/testp.properties: -------------------------------------------------------------------------------- 1 | key1=value1 -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/test/resources/configToolsTestFile.properties: -------------------------------------------------------------------------------- 1 | field=field 2 | field2=field2 -------------------------------------------------------------------------------- /common/doris.common/doris.common/src/test/resources/test/test/test/testp.properties: -------------------------------------------------------------------------------- 1 | key1=value1 -------------------------------------------------------------------------------- /dataserver/dataserver.bdbstore/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /dataserver/dataserver.bdbstore/src/main/java/com/alibaba/doris/dataserver/store/bdb/BDBStorageType.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.bdb; 2 | 3 | import com.alibaba.doris.dataserver.store.StorageType; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class BDBStorageType implements StorageType { 9 | 10 | public String getStorageType() { 11 | return "BDB"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dataserver/dataserver.bdbstore/src/main/resources/META-INF/autoconf/auto-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /dataserver/dataserver.bdbstore/src/test/java/com/alibaba/doris/common/router/virtual/VirtualRouterImpl.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.router.virtual; 2 | 3 | import com.alibaba.doris.common.route.VirtualRouter; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class VirtualRouterImpl implements VirtualRouter { 9 | 10 | private static VirtualRouterImpl instance = new VirtualRouterImpl(); 11 | 12 | private VirtualRouterImpl() { 13 | 14 | } 15 | 16 | public static VirtualRouter getInstance() { 17 | return instance; 18 | } 19 | 20 | public int findVirtualNode(String key) { 21 | int index = Math.abs(key.hashCode()) % virtualNode.length; 22 | return virtualNode[index]; 23 | } 24 | 25 | private int[] virtualNode = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; 26 | 27 | public int getVirtualNum() { 28 | return virtualNode.length; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /dataserver/dataserver.bdbstore/src/test/java/com/alibaba/doris/dataserver/store/bdb/BaseTestCase.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.bdb; 2 | 3 | import java.io.File; 4 | 5 | import junit.framework.TestCase; 6 | 7 | /** 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public abstract class BaseTestCase extends TestCase { 11 | 12 | protected String getCurrentClassPath() { 13 | Class clazz = this.getClass(); 14 | String path = clazz.getClassLoader().getResource("").getPath(); 15 | String clazzName = clazz.getName(); 16 | int index = clazzName.lastIndexOf('.'); 17 | if (index > 0) { 18 | clazzName = clazzName.substring(0, index); 19 | } 20 | 21 | return path + clazzName.replace('.', File.separatorChar); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /dataserver/dataserver.bdbstore/src/test/resources/bdb_db/00000000.jdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/dataserver/dataserver.bdbstore/src/test/resources/bdb_db/00000000.jdb -------------------------------------------------------------------------------- /dataserver/dataserver.bdbstore/src/test/resources/bdb_db/je.info.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/dataserver/dataserver.bdbstore/src/test/resources/bdb_db/je.info.0 -------------------------------------------------------------------------------- /dataserver/dataserver.bdbstore/src/test/resources/bdb_db/je.info.0.lck: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/dataserver/dataserver.bdbstore/src/test/resources/bdb_db/je.info.0.lck -------------------------------------------------------------------------------- /dataserver/dataserver.bdbstore/src/test/resources/bdb_db/je.lck: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/dataserver/dataserver.bdbstore/src/test/resources/bdb_db/je.lck -------------------------------------------------------------------------------- /dataserver/dataserver.bdbstore/src/test/resources/bdb_storage_common_test.properties: -------------------------------------------------------------------------------- 1 | #BDB storage configure 2 | #Alibaba.com, Copyright 2011 3 | 4 | #Default is true 5 | allow.create=true 6 | cursor.preload=true 7 | #Default is application path of runtime. 8 | database.directory=./bdb_test 9 | #Default is false; 10 | db.sorted.duplicates=false 11 | #0:user default setting. 12 | db.btree.fanout=512 13 | 14 | je.env.isTransactional=true 15 | je.lock.nLockTables=10 16 | #The maximum size of each individual JE log file, in bytes. 1073741824 (1G) 17 | je.log.fileMax=1073741824 18 | #Ask the checkpointer to run every time we write this many bytes to the log. If set, supercedes CHECKPOINTER_WAKEUP_INTERVAL. To use time based checkpointing, set this to 0. 19 | #Default 20M 20 | #je.checkpointer.bytesInterval= 21 | je.checkpointer.wakeupInterval=3000000 22 | #je.maxMemory= 23 | -------------------------------------------------------------------------------- /dataserver/dataserver.bdbstore/src/test/resources/bdb_storage_test_mock.properties: -------------------------------------------------------------------------------- 1 | #BDB storage configure 2 | #Alibaba.com, Copyright 2011 3 | 4 | #Default is true 5 | allow.create=true 6 | cursor.preload=false 7 | #Default is application path of runtime. 8 | database.directory= 9 | #Default is false; 10 | db.sorted.duplicates=false 11 | #0:user default setting. 12 | db.btree.fanout=512 13 | 14 | je.env.isTransactional=true 15 | je.lock.nLockTables=10 16 | #The maximum size of each individual JE log file, in bytes. 1073741824 (1G) 17 | je.log.fileMax=1073741824 18 | #Ask the checkpointer to run every time we write this many bytes to the log. If set, supercedes CHECKPOINTER_WAKEUP_INTERVAL. To use time based checkpointing, set this to 0. 19 | #Default 20M 20 | #je.checkpointer.bytesInterval= 21 | je.checkpointer.wakeupInterval=3000000 22 | #je.maxMemory= 23 | -------------------------------------------------------------------------------- /dataserver/dataserver.bdbstore/src/test/resources/bdb_test_mock.properties: -------------------------------------------------------------------------------- 1 | #BDB storage configure 2 | #Alibaba.com, Copyright 2011 3 | 4 | #Default is true 5 | allow.create=false 6 | cursor.preload=false 7 | #Default is application path of runtime. 8 | database.directory= 9 | #Default is false; 10 | db.sorted.duplicates=true 11 | #0:user default setting. 12 | db.btree.fanout=10 13 | 14 | je.env.isTransactional=true 15 | je.lock.nLockTables=30 -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/BaseModule.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver; 2 | 3 | /* 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public abstract class BaseModule implements Module, ModuleContextAware { 7 | 8 | public void setName(String name) { 9 | this.name = name; 10 | } 11 | 12 | public String getName() { 13 | return this.name; 14 | } 15 | 16 | public ModuleContext getModuleContext() { 17 | return this.moduleContext; 18 | } 19 | 20 | public void setModuleContext(ModuleContext moduleContext) { 21 | this.moduleContext = moduleContext; 22 | } 23 | 24 | private ModuleContext moduleContext; 25 | private String name; 26 | } 27 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/ModuleContext.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver; 2 | 3 | import java.util.Enumeration; 4 | 5 | /** 6 | * 模块级上下文对象,对属性的修改,不保证线程安全 7 | * 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public interface ModuleContext { 11 | 12 | public Object getAttribute(String name); 13 | 14 | public void setAttribute(String name, Object value); 15 | 16 | public Enumeration getAttributeNames(); 17 | 18 | public void removeAttribute(String name); 19 | 20 | public ApplicationContext getApplicationContext(); 21 | } 22 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/ModuleContextAware.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public interface ModuleContextAware { 7 | 8 | /** 9 | * 注入当前module的ModuleContext对象 10 | * 11 | * @param moduleContext 12 | */ 13 | public void setModuleContext(ModuleContext moduleContext); 14 | } 15 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/ModuleStatusChecker.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver; 2 | 3 | import com.alibaba.doris.dataserver.action.data.CheckActionData; 4 | 5 | /** 6 | * 模块状态检查接口,当Admin Server检查服务器运行状态时,
7 | * 系统会调用实现了本接口的Module来监测本Module运行状态。 8 | * 9 | * @author ajun Email:jack.yuj@alibaba-inc.com 10 | */ 11 | public interface ModuleStatusChecker { 12 | 13 | boolean isReady(CheckActionData checkActionData); 14 | } 15 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/action/Action.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action; 2 | 3 | import com.alibaba.doris.dataserver.core.Request; 4 | import com.alibaba.doris.dataserver.core.Response; 5 | 6 | /** 7 | * @author ajun Email:jack.yuj@alibaba-inc.com 8 | */ 9 | public interface Action { 10 | 11 | public void execute(Request request, Response response); 12 | } 13 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/action/ActionType.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action; 2 | 3 | import com.alibaba.doris.dataserver.action.parser.ActionParser; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public interface ActionType { 9 | 10 | /** 11 | * 获取当前Action类型的名称。 12 | * 13 | * @return 14 | */ 15 | public String getName(); 16 | 17 | /** 18 | * 获取当前Action类型的二进制byte数组。 19 | * 20 | * @return 21 | */ 22 | public byte[] getNameBytes(); 23 | 24 | /** 25 | * 获取当前请求Action类型相对应的解析器。 26 | * 27 | * @return 28 | */ 29 | public ActionParser getParser(); 30 | } 31 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/action/data/ActionData.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action.data; 2 | 3 | import com.alibaba.doris.dataserver.action.ActionType; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public interface ActionData { 9 | 10 | public ActionType getActionType(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/action/data/CompareAndSetActionData.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action.data; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public class CompareAndSetActionData extends CommonActionData { 7 | 8 | public CompareAndSetActionData() { 9 | super(BaseActionType.CAS); 10 | } 11 | 12 | @Override 13 | public boolean isCas() { 14 | return true; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/action/data/ExitActionData.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action.data; 2 | 3 | import com.alibaba.doris.dataserver.action.ActionType; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class ExitActionData implements ActionData { 9 | 10 | public ActionType getActionType() { 11 | return BaseActionType.EXIT; 12 | } 13 | 14 | @Override 15 | public String toString() { 16 | return getActionType().toString(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/action/data/ShutdownActionData.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action.data; 2 | 3 | import com.alibaba.doris.dataserver.action.ActionType; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class ShutdownActionData implements ActionData { 9 | 10 | public ActionType getActionType() { 11 | return BaseActionType.SHUTDOWN; 12 | } 13 | 14 | @Override 15 | public String toString() { 16 | return BaseActionType.SHUTDOWN.toString(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/action/data/SimpleActionData.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action.data; 2 | 3 | import com.alibaba.doris.dataserver.action.ActionType; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class SimpleActionData extends BaseActionData { 9 | 10 | public SimpleActionData(ActionType actionType) { 11 | this.actionType = actionType; 12 | } 13 | 14 | public ActionType getActionType() { 15 | return actionType; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | StringBuilder sb = new StringBuilder(128); 21 | sb.append(actionType.toString()); 22 | sb.append(" {"); 23 | super.generateInfomation(sb); 24 | sb.append("}"); 25 | return sb.toString(); 26 | } 27 | 28 | private ActionType actionType; 29 | } 30 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/action/parser/ActionParser.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action.parser; 2 | 3 | import com.alibaba.doris.dataserver.action.data.ActionData; 4 | import com.alibaba.doris.dataserver.net.ByteBufferWrapper; 5 | 6 | /** 7 | * @author ajun Email:jack.yuj@alibaba-inc.com 8 | */ 9 | public interface ActionParser { 10 | 11 | public ActionData readHead(byte[] header, int startPos); 12 | 13 | public void readBody(byte[] body, ActionData actionData); 14 | 15 | public void writeHead(ByteBufferWrapper buffer, ActionData actionData); 16 | 17 | public void writeBody(ByteBufferWrapper buffer, ActionData actionData); 18 | } 19 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/action/parser/CompareAndDeleteActionParser.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action.parser; 2 | 3 | import com.alibaba.doris.dataserver.action.data.ActionData; 4 | import com.alibaba.doris.dataserver.action.data.CompareAndDeleteActionData; 5 | 6 | /** 7 | * @author ajun Email:jack.yuj@alibaba-inc.com 8 | */ 9 | public class CompareAndDeleteActionParser extends DeleteActionParser { 10 | 11 | public ActionData readHead(byte[] header, int startPos) { 12 | CompareAndDeleteActionData ad = new CompareAndDeleteActionData(); 13 | int[] pos = { startPos }; 14 | readKeyBytes(ad, header, pos); 15 | ad.setTimestamp(Long.valueOf(parseNextField(header, pos))); 16 | readRouteVersion(ad, header, pos); 17 | readVnode(ad, header, pos); 18 | return ad; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/action/parser/CompareAndSetActionParser.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action.parser; 2 | 3 | import com.alibaba.doris.dataserver.action.data.CommonActionData; 4 | import com.alibaba.doris.dataserver.action.data.CompareAndSetActionData; 5 | 6 | /** 7 | * @author ajun Email:jack.yuj@alibaba-inc.com 8 | */ 9 | public class CompareAndSetActionParser extends SetActionParser { 10 | 11 | @Override 12 | protected CommonActionData generateActionData() { 13 | return new CompareAndSetActionData(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/action/parser/ExitActionParser.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action.parser; 2 | 3 | import com.alibaba.doris.dataserver.action.data.ActionData; 4 | import com.alibaba.doris.dataserver.action.data.ExitActionData; 5 | import com.alibaba.doris.dataserver.net.ByteBufferWrapper; 6 | 7 | /** 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public class ExitActionParser extends BaseActionParser { 11 | 12 | public void writeHead(ByteBufferWrapper buffer, ActionData actionData) { 13 | ; 14 | } 15 | 16 | public ActionData readHead(byte[] header, int startPos) { 17 | return new ExitActionData(); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/action/parser/ShutdownActionParser.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action.parser; 2 | 3 | import com.alibaba.doris.dataserver.action.data.ActionData; 4 | import com.alibaba.doris.dataserver.action.data.ShutdownActionData; 5 | import com.alibaba.doris.dataserver.net.ByteBufferWrapper; 6 | 7 | /** 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public class ShutdownActionParser extends BaseActionParser { 11 | 12 | public ActionData readHead(byte[] header, int startPos) { 13 | return new ShutdownActionData(); 14 | } 15 | 16 | public void writeHead(ByteBufferWrapper buffer, ActionData actionData) { 17 | ; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/config/ModuleConstances.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.config; 2 | 3 | /* 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public class ModuleConstances { 7 | 8 | public static final String STORAGE_MODULE = "storageModule"; 9 | public static final String NETWORK_MODULE = "networkModule"; 10 | public static final String MIGRATION_MODULE = "migrationModule"; 11 | public static final String MONITER_MODULE = "monitorModule"; 12 | public static final String ADMIN_CONFIGURE_MODULE = "configModule"; 13 | } 14 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/config/MoudleConstances.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.config; 2 | 3 | /* 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public class MoudleConstances { 7 | 8 | public static final String STORAGE_MODULE = "storageModule"; 9 | public static final String NETWORK_MODULE = "networkModule"; 10 | public static final String MIGRATION_MODULE = "migrationModule"; 11 | public static final String MONITER_MODULE = "monitorModule"; 12 | public static final String ADMIN_CONFIGURE_MODULE = "configModule"; 13 | } 14 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/config/data/FilterConfigure.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.config.data; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public class FilterConfigure { 7 | 8 | public String getClassName() { 9 | return className; 10 | } 11 | 12 | public void setClassName(String className) { 13 | this.className = className; 14 | } 15 | 16 | private String className; 17 | } 18 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/core/BaseResponse.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.core; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public abstract class BaseResponse implements Response { 7 | } 8 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/core/RequestFilter.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.core; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public interface RequestFilter { 7 | 8 | void doFilter(Request request, Response response, RequestFilterChian filterChain); 9 | } 10 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/core/Response.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.core; 2 | 3 | import com.alibaba.doris.dataserver.action.data.ActionData; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public interface Response { 9 | 10 | void write(ActionData md); 11 | 12 | void flush(); 13 | 14 | /** 15 | * 强制关闭当前连接。 16 | */ 17 | void close(); 18 | } 19 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/BaseEvent.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public abstract class BaseEvent implements Event { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/Event.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public interface Event { 7 | 8 | /** 9 | * 获取当前事件的类型; 10 | * 11 | * @return 12 | */ 13 | EventType getType(); 14 | 15 | /** 16 | * 触发事件时,系统通知监听对象。 17 | * 18 | * @param eventListener 19 | */ 20 | void notify(EventListener eventListener); 21 | } 22 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/EventListener.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public interface EventListener { 7 | } 8 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/EventType.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public enum EventType { 7 | DATA_SERVER_STATE, MIGRATE, CONFIG_CHANGED 8 | } 9 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/config/ConfigEvent.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event.config; 2 | 3 | import com.alibaba.doris.dataserver.event.BaseEvent; 4 | import com.alibaba.doris.dataserver.event.EventListener; 5 | import com.alibaba.doris.dataserver.event.EventType; 6 | 7 | /** 8 | * 配置变更相关的事件。 9 | * 10 | * @author ajun Email:jack.yuj@alibaba-inc.com 11 | */ 12 | public abstract class ConfigEvent extends BaseEvent { 13 | 14 | public EventType getType() { 15 | return EventType.CONFIG_CHANGED; 16 | } 17 | 18 | public void notify(EventListener eventListener) { 19 | ConfigEventListener configEventListener = (ConfigEventListener) eventListener; 20 | configEventListener.onRoutingConfigureChanged(this); 21 | } 22 | 23 | public void getConfig() { 24 | 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/config/ConfigEventListener.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event.config; 2 | 3 | import com.alibaba.doris.dataserver.event.EventListener; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public interface ConfigEventListener extends EventListener { 9 | 10 | /** 11 | * 路由配置变更事件,当集群路由相关的信息发生改变后会触发该事件。
12 | *
13 | * 同时ConfigEvent会附带上变更后及变更前的路由信息。 14 | * 15 | * @param event 16 | */ 17 | public void onRoutingConfigureChanged(ConfigEvent event); 18 | } 19 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/server/DataServerEvent.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event.server; 2 | 3 | import com.alibaba.doris.dataserver.event.BaseEvent; 4 | import com.alibaba.doris.dataserver.event.EventType; 5 | 6 | /** 7 | * @author ajun Email:jack.yuj@alibaba-inc.com 8 | */ 9 | public abstract class DataServerEvent extends BaseEvent { 10 | 11 | public EventType getType() { 12 | return EventType.DATA_SERVER_STATE; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/server/DataServerEventListener.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event.server; 2 | 3 | import com.alibaba.doris.dataserver.event.EventListener; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public interface DataServerEventListener extends EventListener { 9 | 10 | /** 11 | * DataServer启动时会通知该事件。 12 | */ 13 | public void onStartup(); 14 | 15 | /** 16 | * DataServer关闭时会通知shutdown 17 | */ 18 | public void onShutdown(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/server/InterruptMigratingEvent.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event.server; 2 | 3 | import com.alibaba.doris.dataserver.event.EventListener; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class InterruptMigratingEvent extends DataServerEvent { 9 | 10 | public void notify(EventListener eventListener) { 11 | MigrateEventListener listener = (MigrateEventListener) eventListener; 12 | listener.onInterruptMigrating(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/server/MigrateEvent.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event.server; 2 | 3 | import com.alibaba.doris.dataserver.event.EventType; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public abstract class MigrateEvent extends DataServerEvent { 9 | 10 | @Override 11 | public EventType getType() { 12 | return EventType.MIGRATE; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/server/MigrateEventListener.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event.server; 2 | 3 | import com.alibaba.doris.dataserver.event.EventListener; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public interface MigrateEventListener extends EventListener { 9 | 10 | /** 11 | * 当DataServer启动迁移时,会触发本事件。 12 | */ 13 | public void onStartMigrating(); 14 | 15 | /** 16 | * 当DataServer迁移完成时,会触发本事件。 17 | */ 18 | public void onStopMigrating(); 19 | 20 | /** 21 | * 迁移中断事件 22 | */ 23 | public void onInterruptMigrating(); 24 | } 25 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/server/ShutdownEvent.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event.server; 2 | 3 | import com.alibaba.doris.dataserver.event.EventListener; 4 | 5 | /** 6 | * DataServer关闭事件,当DataServer关闭时,系统会触发一个关闭事件。 7 | * 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public class ShutdownEvent extends DataServerEvent { 11 | 12 | public void notify(EventListener eventListener) { 13 | DataServerEventListener listener = (DataServerEventListener) eventListener; 14 | listener.onShutdown(); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/server/StartMigratingEvent.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event.server; 2 | 3 | import com.alibaba.doris.dataserver.event.EventListener; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class StartMigratingEvent extends MigrateEvent { 9 | 10 | public void notify(EventListener eventListener) { 11 | MigrateEventListener listener = (MigrateEventListener) eventListener; 12 | listener.onStartMigrating(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/server/StartupEvent.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event.server; 2 | 3 | import com.alibaba.doris.dataserver.event.EventListener; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class StartupEvent extends DataServerEvent { 9 | 10 | public void notify(EventListener eventListener) { 11 | DataServerEventListener listener = (DataServerEventListener) eventListener; 12 | listener.onStartup(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/event/server/StopMigratingEvent.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.event.server; 2 | 3 | import com.alibaba.doris.dataserver.event.EventListener; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class StopMigratingEvent extends DataServerEvent { 9 | 10 | public void notify(EventListener eventListener) { 11 | MigrateEventListener listener = (MigrateEventListener) eventListener; 12 | listener.onStopMigrating(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/net/InvalidCommandException.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.net; 2 | 3 | import com.alibaba.doris.dataserver.net.protocol.ProtocolParseExcetion; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class InvalidCommandException extends ProtocolParseExcetion { 9 | 10 | private static final long serialVersionUID = 5401136214306874129L; 11 | 12 | public InvalidCommandException() { 13 | 14 | } 15 | 16 | public InvalidCommandException(String msg) { 17 | super(msg); 18 | } 19 | 20 | public InvalidCommandException(String msg, Throwable t) { 21 | super(msg, t); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/store/ClosableIterator.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store; 2 | 3 | import java.util.Iterator; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public interface ClosableIterator extends Iterator { 9 | 10 | public void close(); 11 | } 12 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/store/StorageDriver.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public interface StorageDriver { 7 | 8 | public Storage createStorage(); 9 | 10 | public void init(StorageConfig config); 11 | 12 | public StorageType getStorageType(); 13 | } 14 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/store/StorageType.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public interface StorageType { 7 | 8 | public String getStorageType(); 9 | } 10 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/store/mock/MockStorageType.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.mock; 2 | 3 | import com.alibaba.doris.dataserver.store.StorageType; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public enum MockStorageType implements StorageType { 9 | MOCK_STORAGE; 10 | 11 | public String getStorageType() { 12 | return "MockStorage"; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/main/java/com/alibaba/doris/dataserver/store/serialize/Serializer.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.serialize; 2 | 3 | import java.nio.ByteBuffer; 4 | 5 | import com.alibaba.doris.common.data.ByteWrapper; 6 | 7 | /** 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public interface Serializer { 11 | 12 | public ByteWrapper encode(T t); 13 | 14 | public boolean encode(ByteBuffer buffer, T t); 15 | 16 | public T decode(ByteBuffer buffer); 17 | 18 | public byte getVersion(); 19 | } 20 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/test/java/com/alibaba/doris/common/router/virtual/VirtualRouterImpl.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.router.virtual; 2 | 3 | import com.alibaba.doris.common.route.VirtualRouter; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class VirtualRouterImpl implements VirtualRouter { 9 | 10 | private static VirtualRouterImpl instance = new VirtualRouterImpl(); 11 | 12 | private VirtualRouterImpl() { 13 | 14 | } 15 | 16 | public static VirtualRouter getInstance() { 17 | return instance; 18 | } 19 | 20 | public int findVirtualNode(String key) { 21 | int index = Math.abs(key.hashCode()) % virtualNode.length; 22 | return virtualNode[index]; 23 | } 24 | 25 | private int[] virtualNode = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; 26 | 27 | public int getVirtualNum() { 28 | return virtualNode.length; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/test/java/com/alibaba/doris/dataserver/store/StorageManagerTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store; 2 | 3 | import org.junit.Test; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class StorageManagerTest { 9 | 10 | @Test 11 | public void testGetStorageManager() { 12 | ; 13 | } 14 | 15 | @Test 16 | public void testLoadStorage() { 17 | StorageManager manager = new StorageManager(); 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /dataserver/dataserver.core/src/test/java/com/alibaba/doris/dataserver/store/StorageTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store; 2 | 3 | import org.junit.Test; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class StorageTest { 9 | 10 | @Test 11 | public void testNothing() { 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dataserver/dataserver.deploy/src/autoconf/doris_adminserver_config.properties.vm: -------------------------------------------------------------------------------- 1 | doris.config.adminserver.main.url=$!{doris_config_adminserver_main_url} 2 | doris.config.adminserver.backup.url=$!{doris_config_adminserver_backup_url} 3 | doris.config.fetch.retrytimes=3 4 | doris.config.fetch.interval=3000 5 | doris.config.connection.timeout=2000 6 | doris.config.connection.socket.timeout=2000 -------------------------------------------------------------------------------- /dataserver/dataserver.deploy/src/autoconf/mysql.properties.vm: -------------------------------------------------------------------------------- 1 | #defaultAutoCommit= 2 | #defaultReadOnly= 3 | #defaultTransactionIsolation= 4 | #defaultCatalog= 5 | #driverClassName= 6 | #maxActive= 7 | #maxIdle= 8 | #minIdle= 9 | #initialSize= 10 | #maxWait= 11 | #testOnBorrow= 12 | #testOnReturn= 13 | #timeBetweenEvictionRunsMillis= 14 | #numTestsPerEvictionRun= 15 | #minEvictableIdleTimeMillis= 16 | #testWhileIdle= 17 | #password= 18 | #url= 19 | #username= 20 | #validationQuery= 21 | #accessToUnderlyingConnectionAllowed= 22 | #removeAbandoned= 23 | #removeAbandonedTimeout= 24 | #logAbandoned= 25 | #poolPreparedStatements= 26 | #maxOpenPreparedStatements= 27 | #connectionProperties= 28 | 29 | maxActive=100 30 | maxIdle=72 31 | minIdle=48 32 | 33 | driverClassName=com.mysql.jdbc.Driver 34 | url=jdbc:mysql://127.0.0.1:3306/dorisstore 35 | username=dorisstore 36 | password=dorisstore 37 | -------------------------------------------------------------------------------- /dataserver/dataserver.deploy/src/bin/nodeDataImport: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # preserve current working directory 4 | cd `dirname $0`/.. 5 | BASE=`pwd` 6 | 7 | LIBCLASSPATH=`echo $BASE/lib/*.jar | tr ' ' ':'` 8 | export CLASSPATH=$LIBCLASSPATH:$BASE/conf 9 | 10 | if [ "$LOG_CONFIG" = "" ]; then 11 | LOG_CONFIG="$BASE/conf/log4j.xml" 12 | fi 13 | 14 | [ -n "$LOGROOT"] && LOGROOT="log" 15 | 16 | JAVA_OPTS="-Xmx1024m -Dlog4j.config=$LOG_CONFIG -DlogRoot=log -DlogLevel=ERROR" 17 | 18 | java $JAVA_OPTS com.alibaba.doris.dataserver.NodeMigrateTool $* 19 | 20 | #usage: nodeDataImport -ip 10.20.153.85 -port 6004 -f /home/doris/hello.txt -t txt -vn 1000 -c 20 -p true -------------------------------------------------------------------------------- /dataserver/dataserver.deploy/src/bin/nodeDataMaker: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # preserve current working directory 4 | cd `dirname $0`/.. 5 | BASE=`pwd` 6 | 7 | LIBCLASSPATH=`echo $BASE/lib/*.jar | tr ' ' ':'` 8 | export CLASSPATH=$LIBCLASSPATH:$BASE/conf 9 | 10 | if [ "$LOG_CONFIG" = "" ]; then 11 | LOG_CONFIG="$BASE/conf/log4j.xml" 12 | fi 13 | 14 | [ -n "$LOGROOT"] && LOGROOT="log" 15 | 16 | JAVA_OPTS="-Xmx512m -Dlog4j.config=$LOG_CONFIG -DlogRoot=log -DlogLevel=ERROR" 17 | 18 | java $JAVA_OPTS com.alibaba.doris.client.tools.datamaker.NodeDataMakerTool $* 19 | 20 | #usage: nodeDataMaker -ip 127.0.0.1 -port 9001 -vn 1000 -kp 101:kkk -vp vvv -s 0 -e 1000 -c 5 -p true -------------------------------------------------------------------------------- /dataserver/dataserver.deploy/src/bin/nodecheck: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # preserve current working directory 4 | cd `dirname $0`/.. 5 | BASE=`pwd` 6 | 7 | LIBCLASSPATH=`echo $BASE/lib/*.jar | tr ' ' ':'` 8 | export CLASSPATH=$LIBCLASSPATH:$BASE/conf 9 | 10 | 11 | if [ "$LOG_CONFIG" = "" ]; then 12 | LOG_CONFIG="$BASE/conf/log4j.xml" 13 | fi 14 | 15 | [ -n "$LOGROOT"] && LOGROOT="log" 16 | 17 | JAVA_OPTS="-Xmx64m -Dlog4j.config=$LOG_CONFIG -DlogRoot=log" 18 | 19 | 20 | 21 | 22 | java $JAVA_OPTS com.alibaba.doris.client.tools.NodeCheckTool $* 23 | 24 | #nodecheck -ip 10.20.144.91 -port 9000 -vn 10000 -o get -k 24:aaabbb -------------------------------------------------------------------------------- /dataserver/dataserver.deploy/src/main/resources/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /dataserver/dataserver.deploy/startServer9000.sh: -------------------------------------------------------------------------------- 1 | ./bin/startApp.sh -port 9000 -dbPath db9000 -logRoot log9000 -logLevel DEBUG 2 | 3 | 4 | -------------------------------------------------------------------------------- /dataserver/dataserver.deploy/startServer9005.sh: -------------------------------------------------------------------------------- 1 | ./bin/startApp.sh -port 9005 -dbPath db9005 -logRoot log9005 -logLevel DEBUG 2 | 3 | 4 | -------------------------------------------------------------------------------- /dataserver/dataserver.extratools/src/main/java/com/alibaba/doris/dataserver/extratools/help/print/Line.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.extratools.help.print; 2 | 3 | import com.alibaba.doris.dataserver.core.Response; 4 | import com.alibaba.doris.dataserver.extratools.help.HelperActionData; 5 | 6 | /** 7 | * 打印一个普通行。 8 | * 9 | * @author ajun Email:jack.yuj@alibaba-inc.com 10 | */ 11 | public class Line implements Printer { 12 | 13 | public Line(String line) { 14 | this.line = line; 15 | } 16 | 17 | public void print(Response response) { 18 | HelperActionData md = new HelperActionData(); 19 | md.setMessage(line); 20 | response.write(md); 21 | response.flush(); 22 | } 23 | 24 | protected String getLine() { 25 | return line; 26 | } 27 | 28 | private String line; 29 | } 30 | -------------------------------------------------------------------------------- /dataserver/dataserver.extratools/src/main/java/com/alibaba/doris/dataserver/extratools/help/print/Printer.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.extratools.help.print; 2 | 3 | import com.alibaba.doris.dataserver.core.Response; 4 | 5 | /** 6 | * 打印输出接口。 7 | * 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public interface Printer { 11 | 12 | public void print(Response response); 13 | } 14 | -------------------------------------------------------------------------------- /dataserver/dataserver.extratools/src/main/java/com/alibaba/doris/dataserver/extratools/help/print/SectionLine.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.extratools.help.print; 2 | 3 | import com.alibaba.doris.dataserver.core.Response; 4 | import com.alibaba.doris.dataserver.extratools.help.HelperActionData; 5 | 6 | /** 7 | * 段落行,这是一个特殊的文字行,其内容由一段(多行)内容组成。 8 | * 9 | * @author ajun Email:jack.yuj@alibaba-inc.com 10 | */ 11 | public class SectionLine extends Line { 12 | 13 | public SectionLine(Section section) { 14 | super(null); 15 | this.section = section; 16 | } 17 | 18 | @Override 19 | public void print(Response response) { 20 | section.print(response); 21 | HelperActionData md = new HelperActionData(); 22 | md.setMessage("\r\n"); 23 | response.write(md); 24 | response.flush(); 25 | } 26 | 27 | private Section section; 28 | } 29 | -------------------------------------------------------------------------------- /dataserver/dataserver.extratools/src/main/java/com/alibaba/doris/dataserver/extratools/help/print/TypeLine.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.extratools.help.print; 2 | 3 | import com.alibaba.doris.dataserver.core.Response; 4 | 5 | /** 6 | * 实现逐行打印的效果。 7 | * 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public class TypeLine extends Line { 11 | 12 | public TypeLine(String line) { 13 | super(line); 14 | } 15 | 16 | @Override 17 | public void print(Response response) { 18 | super.print(response); 19 | sleep(1000); 20 | } 21 | 22 | private void sleep(int sleepTime) { 23 | try { 24 | Thread.sleep(sleepTime); 25 | } catch (InterruptedException ignore) { 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /dataserver/dataserver.extratools/src/main/resources/help.txt: -------------------------------------------------------------------------------- 1 | [set] 2 | set 3 | To set value into storage. 4 | [get] 5 | [delete] 6 | [help] 7 | [all] 8 | -S set 9 | -S get 10 | -S delete 11 | [doris] 12 | -T Dev Team: Jack.Yuj HeKun LiZhiHui ZhouYI ZhengMao HeMian HuangLuYi 13 | -T Test Team: YeChenChao LiJing SunChen. 14 | 15 | -T @_@ Doris $_$ 16 | 17 | -T DDD OOO R R R III SSSS 18 | -T D D O O R R I S 19 | -T D D O O R R I SS 20 | -T D D O O R R R I SS 21 | -T D D O O R R I S 22 | -T DDD OOO RR RR III SSSS 23 | 24 | -T Developed by ALIBABA. -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/doris/dataserver/store/handlersocket/HandlerSocketStorageConfig.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.handlersocket; 2 | 3 | import com.alibaba.hsclient.conf.HSConfig; 4 | 5 | public class HandlerSocketStorageConfig extends HSConfig{ 6 | private String dbName; 7 | 8 | public String getDbName() { 9 | return dbName; 10 | } 11 | 12 | public void setDbName(String dbName) { 13 | this.dbName = dbName; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/doris/dataserver/store/handlersocket/HandlerSocketStorageType.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.handlersocket; 2 | 3 | import com.alibaba.doris.dataserver.store.StorageType; 4 | 5 | public enum HandlerSocketStorageType implements StorageType { 6 | 7 | HandlerSocket("HandlerSocket"); 8 | 9 | private HandlerSocketStorageType(String type) { 10 | this.type = type; 11 | } 12 | 13 | public String getStorageType() { 14 | return type; 15 | } 16 | 17 | private String type; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/Command.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient; 2 | 3 | import java.io.UnsupportedEncodingException; 4 | 5 | public interface Command { 6 | public byte[] toByte(String encoding) throws UnsupportedEncodingException; 7 | } 8 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/bean/FilterInfo.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient.bean; 2 | 3 | public class FilterInfo { 4 | 5 | private String fType; 6 | private String fOp; 7 | private String fCol; 8 | 9 | public String getfCol() { 10 | return fCol; 11 | } 12 | 13 | public void setfCol(String fCol) { 14 | this.fCol = fCol; 15 | } 16 | 17 | private String fVal; 18 | 19 | public String getfType() { 20 | return fType; 21 | } 22 | 23 | public void setfType(String fType) { 24 | this.fType = fType; 25 | } 26 | 27 | public String getfOp() { 28 | return fOp; 29 | } 30 | 31 | public void setfOp(String fOp) { 32 | this.fOp = fOp; 33 | } 34 | 35 | public String getfVal() { 36 | return fVal; 37 | } 38 | 39 | public void setfVal(String fVal) { 40 | this.fVal = fVal; 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/bean/InInfo.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient.bean; 2 | 3 | import com.alibaba.hsclient.util.Const; 4 | 5 | public class InInfo { 6 | 7 | private String inOperator = Const.IN_OPERATOR; 8 | private String iCol; 9 | private String[] inValues; 10 | 11 | public InInfo(String iCol, String[] inValues) 12 | { 13 | this.iCol = iCol; 14 | this.inValues = inValues; 15 | } 16 | 17 | public String getInOperator() 18 | { 19 | return inOperator; 20 | } 21 | public String getiCol() { 22 | return iCol; 23 | } 24 | 25 | public void setiCol(String iCol) { 26 | this.iCol = iCol; 27 | } 28 | 29 | public String[] getInValues() { 30 | return inValues; 31 | } 32 | 33 | public void setInValues(String[] inValues) { 34 | this.inValues = inValues; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/bean/IndexInfo.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient.bean; 2 | 3 | public class IndexInfo { 4 | public final int id; 5 | public final String db; 6 | public final String tableName; 7 | public final String indexName; 8 | public final String[] fieldList; 9 | public final String[] filterFieldList; 10 | 11 | public IndexInfo(int id, String db, String tableName, String indexName, 12 | String[] fieldList, String[] filterFieldList) { 13 | super(); 14 | this.id = id; 15 | this.db = db; 16 | this.tableName = tableName; 17 | this.indexName = indexName; 18 | this.fieldList = fieldList; 19 | this.filterFieldList = filterFieldList; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/bean/IndexRecord.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient.bean; 2 | 3 | public class IndexRecord { 4 | public final int id; 5 | public final String db; 6 | public final String tableName; 7 | public final String indexName; 8 | public final String[] fieldList; 9 | 10 | public IndexRecord(int id, String db, String tableName, String indexName, 11 | String[] fieldList) { 12 | super(); 13 | this.id = id; 14 | this.db = db; 15 | this.tableName = tableName; 16 | this.indexName = indexName; 17 | this.fieldList = fieldList; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/bean/LimitInfo.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient.bean; 2 | 3 | public class LimitInfo { 4 | private int limit = 1; 5 | private int offset = 0; 6 | 7 | public int getLimit() { 8 | return limit; 9 | } 10 | 11 | public void setLimit(int limit) { 12 | this.limit = limit; 13 | } 14 | 15 | public int getOffset() { 16 | return offset; 17 | } 18 | 19 | public void setOffset(int offset) { 20 | this.offset = offset; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/bean/ModInfo.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient.bean; 2 | 3 | import com.alibaba.hsclient.util.ModOperator; 4 | 5 | public class ModInfo { 6 | 7 | private ModOperator modType; 8 | private String[] mopValues; 9 | 10 | public ModOperator getModType() { 11 | return modType; 12 | } 13 | 14 | public void setModType(ModOperator modType) { 15 | this.modType = modType; 16 | } 17 | 18 | public String[] getMopValues() { 19 | return mopValues; 20 | } 21 | 22 | public void setMopValues(String[] mopValues) { 23 | this.mopValues = mopValues; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/bean/RowInfo.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient.bean; 2 | 3 | public class RowInfo { 4 | private String[] columns; 5 | 6 | public RowInfo(String[] columns) 7 | { 8 | this.columns = columns; 9 | } 10 | 11 | public String[] getColumns() { 12 | return columns; 13 | } 14 | 15 | public void setColumns(String[] columns) { 16 | this.columns = columns; 17 | } 18 | 19 | public String getColumn(int index) 20 | { 21 | if (index >= columns.length) 22 | { 23 | throw new IllegalArgumentException("..."); 24 | } 25 | else 26 | { 27 | return columns[index]; 28 | } 29 | } 30 | 31 | @Override 32 | public String toString() { 33 | StringBuilder builder = new StringBuilder(); 34 | for (String str : columns) 35 | { 36 | builder.append(str.toString()+"\t"); 37 | } 38 | return builder.toString(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/commond/AuthenticationCommand.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient.commond; 2 | 3 | import java.io.UnsupportedEncodingException; 4 | 5 | import com.alibaba.hsclient.Command; 6 | 7 | /** 8 | * @author yinghui.huangyh 9 | * 10 | */ 11 | public class AuthenticationCommand implements Command{ 12 | 13 | public byte[] toByte(String encoding) throws UnsupportedEncodingException { 14 | // TODO Auto-generated method stub 15 | return null; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/exception/HandlerSocketException.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient.exception; 2 | 3 | public class HandlerSocketException extends Exception { 4 | 5 | private static final long serialVersionUID = -1L; 6 | 7 | public HandlerSocketException() { 8 | super(); 9 | 10 | } 11 | 12 | public HandlerSocketException(String message, Throwable cause) { 13 | super(message, cause); 14 | } 15 | 16 | public HandlerSocketException(String message) { 17 | super(message); 18 | 19 | } 20 | 21 | public HandlerSocketException(Throwable cause) { 22 | super(cause); 23 | 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/util/CompareOperator.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient.util; 2 | 3 | public enum CompareOperator { 4 | EQ, 5 | GT, 6 | GE, 7 | LE, 8 | LT; 9 | 10 | public String getValue() { 11 | switch (this) { 12 | case EQ: 13 | return "="; 14 | case GT: 15 | return ">"; 16 | case GE: 17 | return ">="; 18 | case LE: 19 | return "<="; 20 | case LT: 21 | return "<"; 22 | default: 23 | throw new RuntimeException("Unknow Compare operator " + this); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/util/Const.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient.util; 2 | 3 | public class Const { 4 | public static final String OPEN_INDEX_OPERATOR = "P"; 5 | public static final String INSERT_OPERATOR = "+"; 6 | public static final String AUTH_OPERATOR = "A"; 7 | public static final String AUTH_TYPE = "A"; 8 | public static final String IN_OPERATOR = "@"; 9 | 10 | 11 | public static final byte TOKEN_SEPARATOR_BYTE = 0x09; 12 | public static final byte COMMAND_TERMINATE_BYTE = 0x0a; 13 | public static final String TOKEN_SEPARATOR = "\t"; 14 | public static final String COMMAND_TERMINATE = "\n"; 15 | public static final String COMMA_SEPARATOR = ","; 16 | } 17 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/util/FilterOperator.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient.util; 2 | 3 | public enum FilterOperator { 4 | F, 5 | W; 6 | public String getValue() { 7 | switch (this) { 8 | case F: 9 | return "F"; 10 | case W: 11 | return "W"; 12 | default: 13 | throw new RuntimeException("Unknow filter operator " + this); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/java/com/alibaba/hsclient/util/ModOperator.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.hsclient.util; 2 | 3 | public enum ModOperator { 4 | U, 5 | D, 6 | INC, 7 | DER; 8 | public String getValue() { 9 | switch (this) { 10 | case U: 11 | return "U"; 12 | case D: 13 | return "D"; 14 | case INC: 15 | return "+"; 16 | case DER: 17 | return "-"; 18 | default: 19 | throw new RuntimeException("Unknow modify operator " + this); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/resources/META-INF/autoconf/auto-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/main/resources/META-INF/autoconf/default_bdb.properties.vm: -------------------------------------------------------------------------------- 1 | dbname=$!{databaseName} 2 | host=10.20.153.184 3 | rPort=9998 4 | wrPort=9999 5 | tcpNoDelay=true 6 | reuseAddress=true 7 | readOnly=false; 8 | encoding=utf-8 9 | soTimeout=30000 10 | sendBufferSize=8192 11 | receiveBufferSize=8192 12 | executeBufferSize=8192 13 | blocking=false 14 | hardClose=false 15 | isAuth=false 16 | aKey="" 17 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/test/java/com/alibaba/doris/dataserver/store/handlersocket/HandlerSocketConfigUtilsTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.handlersocket; 2 | 3 | import junit.framework.TestCase; 4 | import com.alibaba.doris.dataserver.store.handlersocket.util.HandlerSocketConfigUtil; 5 | 6 | public class HandlerSocketConfigUtilsTest extends TestCase { 7 | 8 | public void testLoadConfig() { 9 | HandlerSocketStorageConfig config = HandlerSocketConfigUtil.loadHandlerSocketStorageConfigFromFile("handlersocket_test.properties"); 10 | assertNotNull(config); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/test/resources/handlersocket_test.properties: -------------------------------------------------------------------------------- 1 | host=10.20.153.184 2 | rPort=9998 3 | wrPort=9999 4 | dbname=test 5 | tcpNoDelay=true 6 | reuseAddress=true 7 | readOnly=false 8 | encoding=utf-8 9 | soTimeout=30000 10 | sendBufferSize=8192 11 | receiveBufferSize=8192 12 | executeBufferSize=8192 13 | blocking=false 14 | hardClose=false 15 | isAuth=false 16 | aKey="" -------------------------------------------------------------------------------- /dataserver/dataserver.handlersocket/src/test/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=WARN,stdout 2 | 3 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 4 | log4j.appender.stdout.Target=System.out 5 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 6 | log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}\:%L - %m%n 7 | #log4j.appender.stdout.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n 8 | log4j.appender.stdout.threshold=warn 9 | 10 | log4j.appender.stderr=org.apache.log4j.ConsoleAppender 11 | log4j.appender.stderr.Target=System.err 12 | log4j.appender.stderr.layout=org.apache.log4j.PatternLayout 13 | log4j.appender.stderr.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}\:%L - %m%n 14 | log4j.appender.stderr.threshold=WARN 15 | 16 | log4j.logger.com.alibaba.aranda=warn 17 | 18 | -------------------------------------------------------------------------------- /dataserver/dataserver.innodb/lib/jna-3.2.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/dataserver/dataserver.innodb/lib/jna-3.2.2.jar -------------------------------------------------------------------------------- /dataserver/dataserver.innodb/src/main/java/com/alibaba/doris/dataserver/store/innodb/InnoDBStorageType.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.innodb; 2 | 3 | import com.alibaba.doris.dataserver.store.StorageType; 4 | 5 | /* 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public enum InnoDBStorageType implements StorageType { 9 | INNODB("InnoDB"); 10 | 11 | private InnoDBStorageType(String storageType) { 12 | this.storageType = storageType; 13 | } 14 | 15 | public String getStorageType() { 16 | return storageType; 17 | } 18 | 19 | private String storageType; 20 | } 21 | -------------------------------------------------------------------------------- /dataserver/dataserver.innodb/src/main/java/com/alibaba/doris/dataserver/store/innodb/write/WriteType.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.innodb.write; 2 | 3 | public enum WriteType { 4 | INSERT, UPDATE, DELETE 5 | } 6 | -------------------------------------------------------------------------------- /dataserver/dataserver.innodb/src/main/java/com/g414/haildb/ColumnAttribute.java: -------------------------------------------------------------------------------- 1 | package com.g414.haildb; 2 | 3 | 4 | public enum ColumnAttribute { 5 | /* see InnoDB.ib_col_attr_t */ 6 | NONE(0), NOT_NULL(1), UNSIGNED(2), NOT_USED(3), COL_CUSTOM1(4), COL_CUSTOM2( 7 | 5), COL_CUSTOM3(6); 8 | 9 | private final int code; 10 | 11 | private ColumnAttribute(int code) { 12 | this.code = code; 13 | } 14 | 15 | public int getCode() { 16 | return code > 0 ? 1 << (code - 1) : code; 17 | } 18 | 19 | public ColumnAttribute fromCode(int code) { 20 | return ColumnAttribute.values()[code]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /dataserver/dataserver.innodb/src/main/java/com/g414/haildb/InnoException.java: -------------------------------------------------------------------------------- 1 | package com.g414.haildb; 2 | 3 | public class InnoException extends RuntimeException { 4 | private static final long serialVersionUID = 1L; 5 | 6 | public InnoException() { 7 | super(); 8 | } 9 | 10 | public InnoException(String message, Throwable cause) { 11 | super(message, cause); 12 | } 13 | 14 | public InnoException(String message) { 15 | super(message); 16 | } 17 | 18 | public InnoException(Throwable cause) { 19 | super(cause); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /dataserver/dataserver.innodb/src/main/java/com/g414/haildb/TableType.java: -------------------------------------------------------------------------------- 1 | package com.g414.haildb; 2 | 3 | import com.g414.haildb.impl.jna.HailDB; 4 | 5 | public enum TableType { 6 | REDUNDANT(HailDB.ib_tbl_fmt_t.IB_TBL_REDUNDANT), COMPACT( 7 | HailDB.ib_tbl_fmt_t.IB_TBL_COMPACT), DYNAMIC( 8 | HailDB.ib_tbl_fmt_t.IB_TBL_DYNAMIC), COMPRESSED( 9 | HailDB.ib_tbl_fmt_t.IB_TBL_COMPRESSED); 10 | 11 | private final int code; 12 | 13 | private TableType(int code) { 14 | this.code = code; 15 | } 16 | 17 | public int getCode() { 18 | return code; 19 | } 20 | 21 | public static TableType fromCode(int code) { 22 | return TableType.values()[code]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /dataserver/dataserver.innodb/src/main/java/com/g414/haildb/Util.java: -------------------------------------------------------------------------------- 1 | package com.g414.haildb; 2 | 3 | import com.g414.haildb.impl.jna.HailDB; 4 | 5 | public class Util { 6 | public static void assertSuccess(int code) { 7 | if (code != HailDB.db_err.DB_SUCCESS) { 8 | throw new InnoException("INNODB Error " + code + " : " 9 | + HailDB.ib_strerror(code).getString(0)); 10 | } 11 | } 12 | 13 | public static void assertSchemaOperationSuccess(int code) { 14 | if (code != HailDB.IB_TRUE) { 15 | throw new InnoException("INNODB Error " + code + " : " 16 | + HailDB.ib_strerror(code).getString(0)); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /dataserver/dataserver.innodb/src/main/java/com/g414/haildb/tpl/KeyHelper.java: -------------------------------------------------------------------------------- 1 | package com.g414.haildb.tpl; 2 | 3 | import java.util.Map; 4 | 5 | import com.g414.haildb.ColumnDef; 6 | import com.g414.haildb.IndexDef; 7 | import com.g414.haildb.TupleStorage; 8 | 9 | public class KeyHelper { 10 | public static boolean matchesPrimaryKey(IndexDef primary, 11 | Map toFind, Map found) { 12 | for (ColumnDef col : primary.getColumns()) { 13 | String colName = col.getName(); 14 | Object seekVal = toFind.get(colName); 15 | Object foundVal = found.get(colName); 16 | 17 | if (!TupleStorage.areEqual(seekVal, foundVal, col.getType())) { 18 | return false; 19 | } 20 | } 21 | 22 | return true; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /dataserver/dataserver.innodb/src/main/resources/META-INF/autoconf/auto-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /dataserver/dataserver.kyotocabinet/src/main/java/com/alibaba/doris/dataserver/store/kyotocabinet/KyotocabinetStorageConfig.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.kyotocabinet; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public class KyotocabinetStorageConfig { 7 | 8 | public String getDatabasePath() { 9 | return path; 10 | } 11 | 12 | public void setDatabasePath(String path) { 13 | this.path = path; 14 | } 15 | 16 | private String path; 17 | } 18 | -------------------------------------------------------------------------------- /dataserver/dataserver.kyotocabinet/src/main/java/com/alibaba/doris/dataserver/store/kyotocabinet/KyotocabinetStorageType.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.kyotocabinet; 2 | 3 | import com.alibaba.doris.dataserver.store.StorageType; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public enum KyotocabinetStorageType implements StorageType { 9 | KYOTOCABINET("Kyotocabinet"); 10 | 11 | private KyotocabinetStorageType(String type) { 12 | this.type = type; 13 | } 14 | 15 | public String getStorageType() { 16 | return type; 17 | } 18 | 19 | private String type; 20 | } 21 | -------------------------------------------------------------------------------- /dataserver/dataserver.kyotocabinet/src/main/java/com/alibaba/doris/dataserver/store/kyotocabinet/util/DatabaseUtils.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.kyotocabinet.util; 2 | 3 | import com.alibaba.doris.dataserver.store.kyotocabinet.KyotocabinetStorageConfig; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class DatabaseUtils { 9 | 10 | public static KyotocabinetStorageConfig loadStorageConfigFromFile(String p) { 11 | KyotocabinetStorageConfig config = new KyotocabinetStorageConfig(); 12 | String path = DatabaseUtils.class.getClassLoader().getResource("").getPath(); 13 | if (path.startsWith("/")) { 14 | path = path.substring(1); 15 | } 16 | config.setDatabasePath(path); 17 | 18 | return config; 19 | } 20 | 21 | public static void main(String[] args) { 22 | loadStorageConfigFromFile(null); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /dataserver/dataserver.kyotocabinet/src/main/resources/jkyotocabinet.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/dataserver/dataserver.kyotocabinet/src/main/resources/jkyotocabinet.dll -------------------------------------------------------------------------------- /dataserver/dataserver.kyotocabinet/src/main/resources/kyotocabinet.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/dataserver/dataserver.kyotocabinet/src/main/resources/kyotocabinet.jar -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/main/java/com/alibaba/doris/dataserver/store/log/LogStorageType.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.log; 2 | 3 | import com.alibaba.doris.dataserver.store.StorageType; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public enum LogStorageType implements StorageType { 9 | LOG_STORAGE; 10 | 11 | public String getStorageType() { 12 | return "LOG_STORAGE"; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/main/java/com/alibaba/doris/dataserver/store/log/db/LogClumpHead.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.log.db; 2 | 3 | import com.alibaba.doris.dataserver.store.log.entry.ClumpHeadEntry; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public interface LogClumpHead { 9 | 10 | public void open(); 11 | 12 | public ClumpHeadEntry getClumpHeadEntry(); 13 | 14 | public void flush(); 15 | 16 | public void close(); 17 | 18 | public void loadLogHeader(); 19 | } 20 | -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/main/java/com/alibaba/doris/dataserver/store/log/db/ReadWindow.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.log.db; 2 | 3 | import com.alibaba.doris.dataserver.store.log.entry.LogEntry; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public interface ReadWindow { 9 | 10 | /** 11 | * 判断是否到达当前log集中的最后一条记录。 12 | * 13 | * @return 14 | */ 15 | public boolean hasNext(); 16 | 17 | /** 18 | * 获取下一条记录。 19 | * 20 | * @return 21 | */ 22 | public LogEntry next(); 23 | 24 | /** 25 | * 获取文件大小 26 | * 27 | * @return 28 | */ 29 | public long size(); 30 | 31 | public void close(); 32 | } 33 | -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/main/java/com/alibaba/doris/dataserver/store/log/db/WriteWindowRef.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.log.db; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public interface WriteWindowRef extends WriteWindow { 7 | 8 | public void incrementReference(); 9 | 10 | public void releaseReference(); 11 | 12 | public WriteWindow getWriteWindow(); 13 | } 14 | -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/main/java/com/alibaba/doris/dataserver/store/log/db/impl/AppendLogCommand.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.log.db.impl; 2 | 3 | import com.alibaba.doris.dataserver.store.log.entry.LogEntry; 4 | 5 | 6 | /* 7 | * @author ajun Email:jack.yuj@alibaba-inc.com 8 | */ 9 | public class AppendLogCommand extends BaseLogCommand { 10 | public AppendLogCommand(LogEntry logEntry) { 11 | this(logEntry, true); 12 | } 13 | 14 | public AppendLogCommand(LogEntry logEntry, boolean isWaitingForCommandCompleted) { 15 | super(isWaitingForCommandCompleted); 16 | this.logEntry = logEntry; 17 | } 18 | 19 | public Type getType() { 20 | return Type.APPEND; 21 | } 22 | 23 | public LogEntry getLogEntry() { 24 | return logEntry; 25 | } 26 | 27 | private LogEntry logEntry; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/main/java/com/alibaba/doris/dataserver/store/log/db/impl/DeleteLogByTimestampCommand.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.log.db.impl; 2 | 3 | 4 | /* 5 | * @author ajun Email:jack.yuj@alibaba-inc.com 6 | */ 7 | public class DeleteLogByTimestampCommand extends BaseLogCommand { 8 | public DeleteLogByTimestampCommand(long timestampBefore) { 9 | super(true); 10 | this.timestampBefore = timestampBefore; 11 | } 12 | 13 | public Type getType() { 14 | return Type.DELETE_BY_TIMESTAMP; 15 | } 16 | 17 | public long getTimestamp() { 18 | return this.timestampBefore; 19 | } 20 | 21 | private long timestampBefore; 22 | } 23 | -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/main/java/com/alibaba/doris/dataserver/store/log/db/impl/ExitLogCommand.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.log.db.impl; 2 | 3 | /* 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public class ExitLogCommand extends BaseLogCommand { 7 | 8 | public ExitLogCommand() { 9 | super(false); 10 | } 11 | 12 | public Type getType() { 13 | return Type.EXIT; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/main/java/com/alibaba/doris/dataserver/store/log/serialize/LogSerializerFactory.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.log.serialize; 2 | 3 | import com.alibaba.doris.dataserver.store.log.serialize.impl.DefaultLogSerializer; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class LogSerializerFactory { 9 | 10 | private LogSerializerFactory() { 11 | } 12 | 13 | public LogSerializer getSerializer(int version) { 14 | return serializer; 15 | } 16 | 17 | public static LogSerializerFactory getInstance() { 18 | return instance; 19 | } 20 | 21 | private LogSerializer serializer = new DefaultLogSerializer(); 22 | private static final LogSerializerFactory instance = new LogSerializerFactory(); 23 | } 24 | -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/main/resources/META-INF/autoconf/auto-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/main/resources/META-INF/autoconf/default_log_storage.properties.vm: -------------------------------------------------------------------------------- 1 | log.storage.path=$!{doris_dataserver_store_path} 2 | #1M 3 | log.storage.read.buffer.size=1048576 4 | #512k 5 | log.storage.write.buffer.size=1048576 6 | log.storage.write.direct=true 7 | #Default max file size is 100M 8 | log.storage.max.file.size= -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/test/java/com/alibaba/doris/dataserver/store/log/db/ClumpConfigureLoaderTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.log.db; 2 | 3 | import junit.framework.TestCase; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class ClumpConfigureLoaderTest extends TestCase { 9 | 10 | public void testLoadConfigure() { 11 | ClumpConfigureLoader loader = new ClumpConfigureLoader("log_storage_load_test.properties"); 12 | ClumpConfigure conf = loader.load(); 13 | assertNotNull(conf); 14 | 15 | assertEquals(5242880, conf.getReadBufferSize()); 16 | assertEquals(5242880, conf.getWriteBufferSize()); 17 | assertNotNull(conf.getPath()); 18 | assertFalse(conf.isWriteDirect()); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/test/java/com/alibaba/doris/dataserver/store/log/entry/LogEntryTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.log.entry; 2 | 3 | import junit.framework.TestCase; 4 | 5 | import com.alibaba.doris.dataserver.store.log.entry.LogEntry.Type; 6 | 7 | /** 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public class LogEntryTest extends TestCase { 11 | 12 | public void testLogEntyType() { 13 | Type[] typeArray = Type.values(); 14 | for (Type t : typeArray) { 15 | byte code = t.getCode(); 16 | Type decodeType = Type.valueOf(code); 17 | assertEquals(t, decodeType); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/db/data/00000000.ld: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/db/data/00000000.ld -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/db/data/00000000.lh: -------------------------------------------------------------------------------- 1 | >>_0;"I)aF<U=/:?b,@ &9%^3(WcH#6 A!N4Z$ 2CY. 2 | 8 -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/db/data/00000001.ld: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/db/data/00000001.ld -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/db/data/00000001.lh: -------------------------------------------------------------------------------- 1 | >>_0;"I)aF<U=/:?b,@ &9%^3(WcH#6 A!N4Z$ 2CY. 2 | 8 -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/utils/data/00000000.ld: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/utils/data/00000000.ld -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/utils/data/00000000.lh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/utils/data/00000000.lh -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/utils/data/00000001.ld: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/utils/data/00000001.ld -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/utils/data/00000001.lh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itisaid/Doris/d925329bef8cfd1fcb7a4e331c37cfa5597d1edb/dataserver/dataserver.logstore/src/test/resources/com/alibaba/doris/dataserver/store/log/utils/data/00000001.lh -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/test/resources/log_storage_load_test.properties: -------------------------------------------------------------------------------- 1 | log.storage.path= 2 | #512k 3 | log.storage.read.buffer.size=5242880 4 | #512k 5 | log.storage.write.buffer.size=5242880 6 | log.storage.write.direct=false -------------------------------------------------------------------------------- /dataserver/dataserver.logstore/src/test/resources/log_storage_presure_test.properties: -------------------------------------------------------------------------------- 1 | log.storage.path= 2 | #512k 3 | log.storage.read.buffer.size=5242880 4 | #512k 5 | log.storage.write.buffer.size=5242880 6 | log.storage.write.direct=true -------------------------------------------------------------------------------- /dataserver/dataserver.migrator/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /dataserver/dataserver.migrator/src/main/java/com/alibaba/doris/dataserver/migrator/task/migrate/ExitPair.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.migrator.task.migrate; 2 | 3 | import com.alibaba.doris.common.data.Key; 4 | import com.alibaba.doris.common.data.Pair; 5 | import com.alibaba.doris.common.data.Value; 6 | 7 | /** 8 | * 退出线程标记。 9 | * 10 | * @author ajun Email:jack.yuj@alibaba-inc.com 11 | */ 12 | public class ExitPair implements Pair { 13 | 14 | public Key getKey() { 15 | return null; 16 | } 17 | 18 | public Value getValue() { 19 | return null; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /dataserver/dataserver.migrator/src/main/java/com/alibaba/doris/dataserver/migrator/utils/DateUtil.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.alibaba.doris.dataserver.migrator.utils; 5 | 6 | import java.text.SimpleDateFormat; 7 | import java.util.Date; 8 | 9 | /** 10 | * @author raymond 11 | * 12 | */ 13 | public class DateUtil { 14 | 15 | private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); 16 | 17 | public static String formatDate(long time ) { 18 | return formatDate( new Date(time)); 19 | } 20 | 21 | public static String formatDate(Date date ) { 22 | return dateFormat.format( date ); 23 | } 24 | 25 | public static void main(String[] args) { 26 | System.out.println("date: " + formatDate(System.currentTimeMillis())); 27 | System.out.println("date: " + formatDate( 0 )); 28 | System.out.println("date: " + formatDate( -1 )); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /dataserver/dataserver.migrator/src/test/java/com/alibaba/doris/common/router/virtual/VirtualRouterImpl.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.common.router.virtual; 2 | 3 | import com.alibaba.doris.common.route.VirtualRouter; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public class VirtualRouterImpl implements VirtualRouter { 9 | 10 | public static VirtualRouter getInstance() { 11 | return router; 12 | } 13 | 14 | private static final VirtualRouter router = new com.alibaba.doris.common.route.MockVirtualRouter(); 15 | 16 | public int findVirtualNode(String key) { 17 | return router.findVirtualNode(key); 18 | } 19 | 20 | public int getVirtualNum() { 21 | return router.getVirtualNum(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /dataserver/dataserver.monitor/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /dataserver/dataserver.monitor/src/main/java/com/alibaba/doris/dataserver/monitor/action/StatsAction.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.monitor.action; 2 | 3 | import com.alibaba.doris.dataserver.action.BaseAction; 4 | import com.alibaba.doris.dataserver.core.Request; 5 | import com.alibaba.doris.dataserver.core.Response; 6 | 7 | /** 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public class StatsAction extends BaseAction { 11 | 12 | public void execute(Request request, Response response) { 13 | StatsActionData ad = (StatsActionData) request.getActionData(); 14 | response.write(ad); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /dataserver/dataserver.monitor/src/main/java/com/alibaba/doris/dataserver/monitor/support/PrefTrackerKey.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.monitor.support; 2 | 3 | public class PrefTrackerKey { 4 | private String actionName; 5 | private String nameSpace; 6 | 7 | public PrefTrackerKey(String actionName, String nameSpace) { 8 | super(); 9 | this.actionName = actionName; 10 | this.nameSpace = nameSpace; 11 | } 12 | 13 | public String getActionName() { 14 | return actionName; 15 | } 16 | 17 | public String getNameSpace() { 18 | return nameSpace; 19 | } 20 | 21 | public String getkey() { 22 | return actionName + "|" + nameSpace; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /dataserver/dataserver.monitor/src/main/java/com/alibaba/doris/dataserver/monitor/support/RealtimeInfoBuilder.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.monitor.support; 2 | 3 | import com.alibaba.doris.common.RealtimeInfo; 4 | import com.alibaba.doris.dataserver.monitor.action.StatsActionData; 5 | 6 | /** 7 | * 统计实时信息 8 | *
    9 | *
  • uptime:sdfsd
  • 10 | *
      11 | * 12 | * @author helios 13 | */ 14 | public class RealtimeInfoBuilder { 15 | 16 | StatsActionData statsActionData; 17 | 18 | public RealtimeInfoBuilder(StatsActionData statsActionData) { 19 | this.statsActionData = statsActionData; 20 | } 21 | 22 | public RealtimeInfo buildRealtimeInfo() { 23 | RealtimeInfo realtimeInfo = new RealtimeInfo(); 24 | 25 | realtimeInfo.setUpTime(UpTime.getUpTimeInSeconds()); 26 | realtimeInfo.setPrefReports(PerfTracker.report(false)); 27 | 28 | return realtimeInfo; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /dataserver/dataserver.monitor/src/main/java/com/alibaba/doris/dataserver/monitor/support/UpTime.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.monitor.support; 2 | 3 | public class UpTime { 4 | 5 | private final static long SERVER_START = System.currentTimeMillis(); 6 | 7 | public static void init() { 8 | //do nothing just init the class 9 | } 10 | 11 | /** 12 | * 取得系统的启动时间 13 | */ 14 | public static int getUpTimeInSeconds() { 15 | return (int) ((System.currentTimeMillis() - SERVER_START) / 1000); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /dataserver/dataserver.mysql/src/main/java/com/alibaba/doris/dataserver/store/mysql/MysqlStorageConfigure.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.mysql; 2 | 3 | /** 4 | * @author ajun Email:jack.yuj@alibaba-inc.com 5 | */ 6 | public class MysqlStorageConfigure { 7 | 8 | public String getUrl() { 9 | return url; 10 | } 11 | 12 | public void setUrl(String url) { 13 | this.url = url; 14 | } 15 | 16 | public String getUserName() { 17 | return userName; 18 | } 19 | 20 | public void setUserName(String userName) { 21 | this.userName = userName; 22 | } 23 | 24 | public String getPassword() { 25 | return password; 26 | } 27 | 28 | public void setPassword(String password) { 29 | this.password = password; 30 | } 31 | 32 | private String url; 33 | private String userName; 34 | private String password; 35 | } 36 | -------------------------------------------------------------------------------- /dataserver/dataserver.mysql/src/main/java/com/alibaba/doris/dataserver/store/mysql/MysqlStorageType.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.store.mysql; 2 | 3 | import com.alibaba.doris.dataserver.store.StorageType; 4 | 5 | /** 6 | * @author ajun Email:jack.yuj@alibaba-inc.com 7 | */ 8 | public enum MysqlStorageType implements StorageType { 9 | MYSQL("mysql"); 10 | 11 | private MysqlStorageType(String type) { 12 | this.type = type; 13 | } 14 | 15 | public String getStorageType() { 16 | return type; 17 | } 18 | 19 | private String type; 20 | } 21 | -------------------------------------------------------------------------------- /dataserver/dataserver.server/src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /dataserver/dataserver.server/src/main/java/com/alibaba/doris/dataserver/action/CatchCommandErrorAction.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action; 2 | 3 | import com.alibaba.doris.dataserver.action.data.ErrorActionData; 4 | import com.alibaba.doris.dataserver.core.Request; 5 | import com.alibaba.doris.dataserver.core.Response; 6 | 7 | /** 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public class CatchCommandErrorAction implements Action { 11 | 12 | public void execute(Request request, Response response) { 13 | ErrorActionData errorActionData = (ErrorActionData) request.getActionData(); 14 | if (null != errorActionData) { 15 | response.write(errorActionData); 16 | } 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /dataserver/dataserver.server/src/main/java/com/alibaba/doris/dataserver/action/ExitServerAction.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.action; 2 | 3 | import com.alibaba.doris.dataserver.action.data.ExitActionData; 4 | import com.alibaba.doris.dataserver.core.Request; 5 | import com.alibaba.doris.dataserver.core.Response; 6 | 7 | /** 8 | * @author ajun Email:jack.yuj@alibaba-inc.com 9 | */ 10 | public class ExitServerAction implements Action { 11 | 12 | public void execute(Request request, Response response) { 13 | ExitActionData md = (ExitActionData) request.getActionData(); 14 | if (null != md) { 15 | // close current connection. 16 | response.close(); 17 | } 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /dataserver/dataserver.server/src/test/java/com/alibaba/doris/dataserver/core/mock/MockRequest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.core.mock; 2 | 3 | import com.alibaba.doris.common.data.Key; 4 | import com.alibaba.doris.common.data.Value; 5 | import com.alibaba.doris.dataserver.action.Action; 6 | import com.alibaba.doris.dataserver.core.BaseRequest; 7 | 8 | /** 9 | * @author ajun Email:jack.yuj@alibaba-inc.com 10 | */ 11 | public class MockRequest extends BaseRequest { 12 | 13 | public MockRequest(Action action) { 14 | super(null, null); 15 | } 16 | 17 | public String getClientAddress() { 18 | return null; 19 | } 20 | 21 | public Key getKey() { 22 | return null; 23 | } 24 | 25 | public Value getValue() { 26 | return null; 27 | } 28 | 29 | public String getServerAddress() { 30 | return null; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /dataserver/dataserver.server/src/test/java/com/alibaba/doris/dataserver/core/mock/MockResponse.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.core.mock; 2 | 3 | import com.alibaba.doris.dataserver.action.data.ActionData; 4 | import com.alibaba.doris.dataserver.core.BaseResponse; 5 | 6 | /** 7 | * @author ajun Email:jack.yuj@alibaba-inc.com 8 | */ 9 | public class MockResponse extends BaseResponse { 10 | 11 | public void flush() { 12 | 13 | } 14 | 15 | public void write(ActionData md) { 16 | } 17 | 18 | public void close() { 19 | 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /dataserver/dataserver.server/src/test/java/com/alibaba/doris/dataserver/core/mock/NormalFilter1.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.core.mock; 2 | 3 | import com.alibaba.doris.dataserver.core.Request; 4 | import com.alibaba.doris.dataserver.core.RequestFilter; 5 | import com.alibaba.doris.dataserver.core.RequestFilterChian; 6 | import com.alibaba.doris.dataserver.core.Response; 7 | 8 | /** 9 | * @author ajun Email:jack.yuj@alibaba-inc.com 10 | */ 11 | public class NormalFilter1 implements RequestFilter { 12 | 13 | public void doFilter(Request request, Response response, RequestFilterChian filterChain) { 14 | System.out.println("NormalFilter1"); 15 | filterChain.doFilter(request, response); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /dataserver/dataserver.server/src/test/java/com/alibaba/doris/dataserver/core/mock/NormalFilter2.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.core.mock; 2 | 3 | import com.alibaba.doris.dataserver.core.Request; 4 | import com.alibaba.doris.dataserver.core.RequestFilter; 5 | import com.alibaba.doris.dataserver.core.RequestFilterChian; 6 | import com.alibaba.doris.dataserver.core.Response; 7 | 8 | /** 9 | * @author ajun Email:jack.yuj@alibaba-inc.com 10 | */ 11 | public class NormalFilter2 implements RequestFilter { 12 | 13 | public void doFilter(Request request, Response response, RequestFilterChian filterChain) { 14 | System.out.println("NormalFilter2"); 15 | filterChain.doFilter(request, response); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /dataserver/dataserver.server/src/test/java/com/alibaba/doris/dataserver/core/mock/TheFirstFilter.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.core.mock; 2 | 3 | import com.alibaba.doris.dataserver.core.Request; 4 | import com.alibaba.doris.dataserver.core.RequestFilter; 5 | import com.alibaba.doris.dataserver.core.RequestFilterChian; 6 | import com.alibaba.doris.dataserver.core.Response; 7 | 8 | /** 9 | * @author ajun Email:jack.yuj@alibaba-inc.com 10 | */ 11 | public class TheFirstFilter implements RequestFilter { 12 | 13 | public void doFilter(Request request, Response response, RequestFilterChian filterChain) { 14 | System.out.println("TheFirstFilter"); 15 | filterChain.doFilter(request, response); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /dataserver/dataserver.server/src/test/java/com/alibaba/doris/dataserver/core/mock/TheLastFilter.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.doris.dataserver.core.mock; 2 | 3 | import com.alibaba.doris.dataserver.core.Request; 4 | import com.alibaba.doris.dataserver.core.RequestFilter; 5 | import com.alibaba.doris.dataserver.core.RequestFilterChian; 6 | import com.alibaba.doris.dataserver.core.Response; 7 | 8 | /** 9 | * @author ajun Email:jack.yuj@alibaba-inc.com 10 | */ 11 | public class TheLastFilter implements RequestFilter { 12 | 13 | public void doFilter(Request request, Response response, RequestFilterChian filterChain) { 14 | System.out.println("TheLastFilter"); 15 | filterChain.doFilter(request, response); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /dataserver/dataserver.server/src/test/resources/bdb.properties: -------------------------------------------------------------------------------- 1 | #BDB storage configure 2 | #Alibaba.com, Copyright 2011 3 | 4 | #Default is true 5 | allow.create=true 6 | cursor.preload=true 7 | #Default is application path of runtime. 8 | database.directory= 9 | #Default is false; 10 | db.sorted.duplicates=false 11 | #0:user default setting. 12 | db.btree.fanout=512 13 | 14 | je.env.isTransactional=true 15 | je.lock.nLockTables=10 16 | #The maximum size of each individual JE log file, in bytes. 1073741824 (1G) 17 | je.log.fileMax=1073741824 18 | #Ask the checkpointer to run every time we write this many bytes to the log. If set, supercedes CHECKPOINTER_WAKEUP_INTERVAL. To use time based checkpointing, set this to 0. 19 | #Default 20M 20 | #je.checkpointer.bytesInterval= 21 | je.checkpointer.wakeupInterval=3000000000 22 | #je.maxMemory= 23 | -------------------------------------------------------------------------------- /dataserver/dataserver.server/src/test/resources/doris_adminserver_config.properties: -------------------------------------------------------------------------------- 1 | doris.config.adminserver.main.url=http://10.20.153.85/doris.admin 2 | doris.config.adminserver.backup.url=http://10.20.153.85/doris.admin 3 | doris.config.fetch.retrytimes=3 4 | doris.config.fetch.interval=3000 5 | doris.config.connection.timeout=2000 6 | doris.config.connection.socket.timeout=2000 7 | -------------------------------------------------------------------------------- /dataserver/dataserver.server/src/test/resources/log_storage.properties: -------------------------------------------------------------------------------- 1 | log.storage.path= 2 | #512k 3 | log.storage.read.buffer.size=524288 4 | #512k 5 | log.storage.write.buffer.size=524288 6 | log.storage.write.direct=true 7 | #Default max file size is 100M 8 | log.storage.max.file.size= -------------------------------------------------------------------------------- /dataserver/dataserver.tools/src/main/java/com/alibaba/doris/client/tools/concurrent/AtomTask.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.alibaba.doris.client.tools.concurrent; 5 | 6 | /** 7 | * @author raymond 8 | * 9 | */ 10 | public interface AtomTask { 11 | 12 | void setIndex(long index) ; 13 | 14 | long getIndex(); 15 | 16 | void doRun(long index); 17 | } 18 | -------------------------------------------------------------------------------- /dataserver/dataserver.tools/src/main/java/com/alibaba/doris/client/tools/concurrent/AtomTaskImpl.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.alibaba.doris.client.tools.concurrent; 5 | 6 | /** 7 | * @author raymond 8 | * 9 | */ 10 | public class AtomTaskImpl implements AtomTask { 11 | 12 | private long index; 13 | /** 14 | * @see com.alibaba.doris.client.tools.concurrent.AtomTask#getIndex() 15 | */ 16 | public long getIndex() { 17 | return index; 18 | } 19 | 20 | /** 21 | * @see com.alibaba.doris.client.tools.concurrent.AtomTask#setIndex(long) 22 | */ 23 | public void setIndex(long index) { 24 | this.index = index; 25 | } 26 | 27 | public void doRun(long index) { 28 | System.out.println("AtomTask.doRun->" + index); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /dataserver/dataserver.tools/src/main/java/com/alibaba/doris/client/tools/concurrent/ParralelDemo.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.alibaba.doris.client.tools.concurrent; 5 | 6 | 7 | /** 8 | * @author raymond 9 | * 10 | */ 11 | public class ParralelDemo { 12 | 13 | public static void main(String[] args) { 14 | int start = 0; 15 | int end = 1000; 16 | int concurrent = 10; 17 | boolean needProfiling = true; 18 | ParralelExecutor executor = new ParralelExecutorImpl(start,end, concurrent, needProfiling , ParralelTaskImpl.class); 19 | executor.setNeedPofiling( true ); 20 | executor.start(); 21 | 22 | Object result; 23 | try { 24 | result = executor.getResult(); 25 | System.out.println("result: " + result ); 26 | } catch(Exception e) { 27 | } 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /dataserver/dataserver.tools/src/main/java/com/alibaba/doris/client/tools/concurrent/ParralelExecutor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.alibaba.doris.client.tools.concurrent; 5 | 6 | /** 7 | * @author raymond 8 | * 9 | */ 10 | public interface ParralelExecutor { 11 | 12 | public int getStart(); 13 | 14 | public void setStart(int start); 15 | 16 | public int getEnd(); 17 | 18 | public void setEnd(int end); 19 | 20 | public int getConcurrent(); 21 | 22 | public void setConcurrent(int concurrent); 23 | 24 | public boolean isNeedPofiling(); 25 | 26 | public void setNeedPofiling(boolean needPofiling); 27 | 28 | public void start(); 29 | 30 | public Object getResult(); 31 | 32 | public void setParralelTaskFactory(ParralelTaskFactory parralelTaskFactory); 33 | 34 | public PermMeter getPermMeter(); 35 | } 36 | -------------------------------------------------------------------------------- /dataserver/dataserver.tools/src/main/java/com/alibaba/doris/client/tools/concurrent/Range.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.alibaba.doris.client.tools.concurrent; 5 | 6 | /** 7 | * @author raymond 8 | * 9 | */ 10 | public class Range { 11 | 12 | private long start; 13 | private long end; 14 | 15 | public Range( long start, long end) { 16 | this.start = start; 17 | this.end = end; 18 | } 19 | public long getStart() { 20 | return start; 21 | } 22 | public void setStart(long start) { 23 | this.start = start; 24 | } 25 | public long getEnd() { 26 | return end; 27 | } 28 | public void setEnd(long end) { 29 | this.end = end; 30 | } 31 | 32 | 33 | } 34 | -------------------------------------------------------------------------------- /dataserver/dataserver.tools/src/test/java/com/alibaba/platform/app/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.alibaba.platform.app; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | --------------------------------------------------------------------------------