├── .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 |
--------------------------------------------------------------------------------
/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 ) a F <