----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/36393/ -----------------------------------------------------------
(Updated July 21, 2015, 9:48 a.m.) Review request for lens. Changes ------- Changed implementation of FairPriorityBlockingQueue. Bugs: LENS-619 https://issues.apache.org/jira/browse/LENS-619 Repository: lens Description (updated) ------- Lens will always accept a new query from a user and put it in a scheduling queue for processing. Next candidate query picked up from scheduling queue for processing will be launched only if all query constraints evaluated on candidate query and launched queries allows the candidate query to be launched, otherwise the candidate query will be added to waiting queries. When any launched query is finished, a waiting query selector will select waiting queries for rescheduling using a list of waiting queries selection policy. Every waiting query selection policy will return a list of eligible waiting queries to be rescheduled. Query Selector will calculate intersection of multiple list of eligible waiting queries and add the result of intersection to scheduling queue for reprocessing. At initialization, Query Constraints and Waiting Query Selection Policies will be configured using configuration values. New Query Constraints and Waiting Query Selection Policies can be added at runtime, without rebuilding and deploying lens module. Drivers should be allowed to add more Query Constraints and Waiting Queries Selection policies. Waiting Queries will be persisted across server restarts. Query Constraint 1: Allow a candidate query to be launched, only if, cumulative query cost of all current queries launched by the user, who submitted candidate query, is less than a cumulative query cost ceiling for launching a new query. Waiting Query Selection Policy 1: Select all waiting queries of the user whose query has finished. Query Constraint 2: Allow a candidate query to be launched, only if, current concurrent queries launched on the selected driver are less than max concurrent queries allowed on the driver. Waiting Query Selection Policy 2: Select all waiting queries of the driver whose query has finished. Diffs (updated) ----- lens-api/src/main/java/org/apache/lens/api/Addable.java 5a556918afcdb8967deee84472cd7863aeafc4fc lens-api/src/main/java/org/apache/lens/api/query/LensQuery.java f594133e8a75603e5bb0c913d62ea189248cfa05 lens-api/src/main/java/org/apache/lens/api/query/QueryStatus.java 539f0b0b0804257fae6b7ec0af8f2f715175d597 lens-client/src/main/java/org/apache/lens/client/LensStatement.java f7305fb288167cda088e263a62c77f264d779127 lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java 7c3e3e08bc7e6949588aa073665fd97596e1a1ae lens-driver-hive/src/main/resources/hivedriver-default.xml 300ce3fed7814d446b3aeb8688927c2dc8800f81 lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java e3a879929ceb0dad054c71231bc4a70162ecd9ce lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriverConfConstants.java ebcdaca7c7bab3a15feb10e69ef41238a8bae506 lens-driver-jdbc/src/main/resources/jdbcdriver-default.xml 99f6f205dfe6f1c16277ac6624106436df2b2b8f lens-server-api/pom.xml b0b0fe017a239b24c3b9606b3be77a1722844e0f lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java 2b3a4800dc31e1c0787f2da9178456bec871a8a9 lens-server-api/src/main/java/org/apache/lens/server/api/common/ConfigBasedObjectCreationFactory.java PRE-CREATION lens-server-api/src/main/java/org/apache/lens/server/api/driver/LensDriver.java 52207d342ea9ea154ef6ebd1cf4266176039c561 lens-server-api/src/main/java/org/apache/lens/server/api/driver/MinQueryCostSelector.java c3fe8eb142569c0b254f551c3cbd18502b6eac99 lens-server-api/src/main/java/org/apache/lens/server/api/metrics/MetricsService.java 71128b7d35e91fadf38a9c3926ce46d42369ead4 lens-server-api/src/main/java/org/apache/lens/server/api/query/AbstractQueryContext.java 71a37f079f6b43a5cde689ce2c2e8fccb83eb78d lens-server-api/src/main/java/org/apache/lens/server/api/query/DriverSelectorQueryContext.java 3e7de173a4e3083ca3ac5fa95fd7cd09e7f028bb lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java 6e7ab5dc1c78407a24e389c001ca3100563e3795 lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java d72727e7832d02ed2ea90379cd29c7a8e509a8f8 lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryExecutionService.java 5d7163f112d7c7115ebf8f012ba397bfee63adbc lens-server-api/src/main/java/org/apache/lens/server/api/query/collect/DriverSpecificWaitingQueriesSelectionPolicy.java PRE-CREATION lens-server-api/src/main/java/org/apache/lens/server/api/query/collect/DriverSpecificWaitingQueriesSelectionPolicyFactory.java PRE-CREATION lens-server-api/src/main/java/org/apache/lens/server/api/query/collect/EstimatedImmutableQueryCollection.java PRE-CREATION lens-server-api/src/main/java/org/apache/lens/server/api/query/collect/ImmutableQueryCollection.java PRE-CREATION lens-server-api/src/main/java/org/apache/lens/server/api/query/collect/WaitingQueriesSelectionPolicy.java PRE-CREATION lens-server-api/src/main/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraint.java PRE-CREATION lens-server-api/src/main/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraintFactory.java PRE-CREATION lens-server-api/src/main/java/org/apache/lens/server/api/query/constraint/QueryLaunchingConstraint.java PRE-CREATION lens-server-api/src/main/java/org/apache/lens/server/api/query/cost/FactPartitionBasedQueryCost.java 7fa5cdb55959a44b52a29884fd629c2479fdfb96 lens-server-api/src/main/java/org/apache/lens/server/api/query/cost/QueryCost.java be7232134b59f7126edba569358389a9c26a5c74 lens-server-api/src/main/java/org/apache/lens/server/api/util/LensUtil.java f9262994debe0b943123d13c58a22c10b2015e80 lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java dffcfd3567dd015e7c79773c5e8cd6669c2d9d95 lens-server-api/src/test/java/org/apache/lens/server/api/query/collect/DriverSpecificWaitingQueriesSelectionPolicyTest.java PRE-CREATION lens-server-api/src/test/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraintTest.java PRE-CREATION lens-server-api/src/test/java/org/apache/lens/server/api/query/cost/TestFactPartitionBasedQueryCost.java 0ab0b0ec7c83c1eac8d61c8a30ecec5e9dc2e322 lens-server/pom.xml 6ac30a52cc8c1c58bf8e92bb77df358db6e22a3e lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java 39f9f5216acf6e1be7cca6a0851152a78ba66176 lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java 190435036c5cf8f009d7fbd536ef1743b70c22d9 lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java 47d27d06272c0c26a93818fdee90cf978a650d10 lens-server/src/main/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollection.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/query/collect/DefaultQueryCollection.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/query/collect/IntersectingWaitingQueriesSelector.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/query/collect/MutableQueryCollection.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/query/collect/QueryCollection.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/query/collect/ThreadSafeEstimatedQueryCollection.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/query/collect/ThreadSafeQueryCollection.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/query/collect/UserSpecificWaitingQueriesSelectionPolicy.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/query/collect/UserSpecificWaitingQueriesSelectionPolicyFactory.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/query/collect/WaitingQueriesSelector.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/query/constraint/DefaultQueryLaunchingConstraintsChecker.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/query/constraint/QueryLaunchingConstraintsChecker.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/query/constraint/TotalQueryCostCeilingConstraint.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/query/constraint/TotalQueryCostCeilingConstraintFactory.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/util/FairPriorityBlockingQueue.java PRE-CREATION lens-server/src/main/java/org/apache/lens/server/util/UtilityMethods.java 715347fab82b5d9d4ad673c45e72900b9a95fc81 lens-server/src/main/resources/lensserver-default.xml 2b540b828a976378bdfbd238e8427a22941fb7e8 lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java 7e486aee1e995954bd25beac85a9fafed95ce20e lens-server/src/test/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollectionTest.java PRE-CREATION lens-server/src/test/java/org/apache/lens/server/query/collect/DefaultQueryCollectionTest.java PRE-CREATION lens-server/src/test/java/org/apache/lens/server/query/collect/IntersectingWaitingQueriesSelectorTest.java PRE-CREATION lens-server/src/test/java/org/apache/lens/server/query/collect/QueryCollectUtil.java PRE-CREATION lens-server/src/test/java/org/apache/lens/server/query/collect/ThreadSafetyTest.java PRE-CREATION lens-server/src/test/java/org/apache/lens/server/query/collect/UserSpecificWaitingQueriesSelectionPolicyTest.java PRE-CREATION lens-server/src/test/java/org/apache/lens/server/query/constraint/DefaultQueryLaunchingConstraintsCheckerTest.java PRE-CREATION lens-server/src/test/java/org/apache/lens/server/query/constraint/TotalQueryCostCeilingConstraintFactoryTest.java PRE-CREATION lens-server/src/test/java/org/apache/lens/server/query/constraint/TotalQueryCostCeilingConstraintTest.java PRE-CREATION lens-server/src/test/resources/lens-site.xml 3bcbf0e3e44d986a24c00cad84121be72596c64d lens-server/src/test/resources/log4j.properties e0f9daa62c7d88f5044803c5a0ce2ffb2ac9315b src/site/apt/admin/config.apt c5bf70c612a8d9bc383d0031e5cb51338cbd1da8 src/site/apt/admin/hivedriver-config.apt 80a3028789348493a84e753965d32cc30690c503 src/site/apt/admin/jdbcdriver-config.apt b3d25f6751dd030a4ae818845a4a504ca41d7895 src/site/apt/user/index.apt d48c7347314876989cf8de8f3e330dc972e3ec5d Diff: https://reviews.apache.org/r/36393/diff/ Testing ------- Patch rebased with master and all test cases passed: [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] Lens Checkstyle Rules ............................. SUCCESS [3.312s] [INFO] Lens .............................................. SUCCESS [4.667s] [INFO] Lens API .......................................... SUCCESS [31.360s] [INFO] Lens API for server and extensions ................ SUCCESS [33.701s] [INFO] Lens Cube ......................................... SUCCESS [5:52.120s] [INFO] Lens DB storage ................................... SUCCESS [27.322s] [INFO] Lens Query Library ................................ SUCCESS [22.338s] [INFO] Lens Hive Driver .................................. SUCCESS [3:44.595s] [INFO] Lens Driver for JDBC .............................. SUCCESS [52.297s] [INFO] Lens Server ....................................... SUCCESS [11:28.682s] [INFO] Lens client ....................................... SUCCESS [46.951s] [INFO] Lens CLI .......................................... SUCCESS [3:54.445s] [INFO] Lens Examples ..................................... SUCCESS [13.859s] [INFO] Lens Distribution ................................. SUCCESS [13.041s] [INFO] Lens ML Lib ....................................... SUCCESS [2:03.557s] [INFO] Lens ML Ext Distribution .......................... SUCCESS [5.792s] [INFO] Lens Regression ................................... SUCCESS [15.693s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 31:34.656s [INFO] Finished at: Mon Jul 20 13:43:03 IST 2015 [INFO] Final Memory: 123M/336M [INFO] ------------------------------------------------------------------------ Thanks, Himanshu Gahlaut