[jira] [Created] (HBASE-21586) Do not allocate empty arrays in hbase.
John Leach created HBASE-21586: -- Summary: Do not allocate empty arrays in hbase. Key: HBASE-21586 URL: https://issues.apache.org/jira/browse/HBASE-21586 Project: HBase Issue Type: Improvement Reporter: John Leach Small nit but it is good to use the static empty arrays vs. creating new ones. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Resolved] (HBASE-20995) Clean Up Manual Array Copies, trivial
[ https://issues.apache.org/jira/browse/HBASE-20995?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] John Leach resolved HBASE-20995. Resolution: Won't Fix > Clean Up Manual Array Copies, trivial > - > > Key: HBASE-20995 > URL: https://issues.apache.org/jira/browse/HBASE-20995 > Project: HBase > Issue Type: Improvement >Reporter: John Leach >Assignee: John Leach >Priority: Trivial > Attachments: HBASE-20995.patch > > > Clean up manual array copies in code. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Created] (HBASE-20995) Clean Up Manual Array Copies, trivial
John Leach created HBASE-20995: -- Summary: Clean Up Manual Array Copies, trivial Key: HBASE-20995 URL: https://issues.apache.org/jira/browse/HBASE-20995 Project: HBase Issue Type: Improvement Reporter: John Leach Clean up manual array copies in code. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Created] (HBASE-20994) Clean up manual array to collection copy, trivial
John Leach created HBASE-20994: -- Summary: Clean up manual array to collection copy, trivial Key: HBASE-20994 URL: https://issues.apache.org/jira/browse/HBASE-20994 Project: HBase Issue Type: Bug Reporter: John Leach Remove for loops adding to collections. (Style) -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Created] (HBASE-18280) Manual Array Copy Cleanup: Automated
John Leach created HBASE-18280: -- Summary: Manual Array Copy Cleanup: Automated Key: HBASE-18280 URL: https://issues.apache.org/jira/browse/HBASE-18280 Project: HBase Issue Type: Improvement Reporter: John Leach Assignee: John Leach Priority: Trivial Remove Manual Array Copies: Style Issue -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Created] (HBASE-18279) Manual Array to Collection Copy: Automated
John Leach created HBASE-18279: -- Summary: Manual Array to Collection Copy: Automated Key: HBASE-18279 URL: https://issues.apache.org/jira/browse/HBASE-18279 Project: HBase Issue Type: Improvement Reporter: John Leach Assignee: John Leach Style Cleanup. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Created] (HBASE-17242) Isolate Legacy Scanner Logic
John Leach created HBASE-17242: -- Summary: Isolate Legacy Scanner Logic Key: HBASE-17242 URL: https://issues.apache.org/jira/browse/HBASE-17242 Project: HBase Issue Type: Improvement Reporter: John Leach Duplicative logic in StoreScanner. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-17216) A Few Fields Can Be Safely Made Static
John Leach created HBASE-17216: -- Summary: A Few Fields Can Be Safely Made Static Key: HBASE-17216 URL: https://issues.apache.org/jira/browse/HBASE-17216 Project: HBase Issue Type: Improvement Reporter: John Leach Automated Test... -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-17208) Manual Array Copy Cleanup: Automated
John Leach created HBASE-17208: -- Summary: Manual Array Copy Cleanup: Automated Key: HBASE-17208 URL: https://issues.apache.org/jira/browse/HBASE-17208 Project: HBase Issue Type: Improvement Reporter: John Leach Priority: Trivial Remove Manual Array Copies: Automated -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-17207) Arrays.asList() with too few arguments
John Leach created HBASE-17207: -- Summary: Arrays.asList() with too few arguments Key: HBASE-17207 URL: https://issues.apache.org/jira/browse/HBASE-17207 Project: HBase Issue Type: Improvement Reporter: John Leach Priority: Trivial -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-16496) Hotspotting on SequenceIDAccounting during HLOG Performance Test
John Leach created HBASE-16496: -- Summary: Hotspotting on SequenceIDAccounting during HLOG Performance Test Key: HBASE-16496 URL: https://issues.apache.org/jira/browse/HBASE-16496 Project: HBase Issue Type: Bug Reporter: John Leach Priority: Trivial I was seeing this hotspot for me during my tests. Adding Pic. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-16484) Create an Interface defining MultiVersionConsistencyControl
John Leach created HBASE-16484: -- Summary: Create an Interface defining MultiVersionConsistencyControl Key: HBASE-16484 URL: https://issues.apache.org/jira/browse/HBASE-16484 Project: HBase Issue Type: Bug Reporter: John Leach Priority: Minor Hopefully this will help clarify this critical component. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-16468) RowLocks use a list implementation instead of an array implementation
John Leach created HBASE-16468: -- Summary: RowLocks use a list implementation instead of an array implementation Key: HBASE-16468 URL: https://issues.apache.org/jira/browse/HBASE-16468 Project: HBase Issue Type: Bug Reporter: John Leach Little nit, but no reason to create the extra objects. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-14540) Write Ahead Log Batching Optimization
John Leach created HBASE-14540: -- Summary: Write Ahead Log Batching Optimization Key: HBASE-14540 URL: https://issues.apache.org/jira/browse/HBASE-14540 Project: HBase Issue Type: Improvement Reporter: John Leach The new write ahead log mechanism seems to batch too few mutations when running inside the disruptor. As we scaled our load up (many threads with small writes), we saw the number of hdfs sync operations grow in concert with the number of writes. Generally, one would expect the size of the batches to grow but the number of actual sync operations to settle. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-13691) HTable and RPC Code Accessing Configuration each time (Blocking)
John Leach created HBASE-13691: -- Summary: HTable and RPC Code Accessing Configuration each time (Blocking) Key: HBASE-13691 URL: https://issues.apache.org/jira/browse/HBASE-13691 Project: HBase Issue Type: Improvement Reporter: John Leach Properties.getProperty blocks under load... -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-13690) Client Scanner Initialization Reformats strings every time
John Leach created HBASE-13690: -- Summary: Client Scanner Initialization Reformats strings every time Key: HBASE-13690 URL: https://issues.apache.org/jira/browse/HBASE-13690 Project: HBase Issue Type: Improvement Reporter: John Leach Priority: Critical The client scanner continually goes back into the conf for values... public ClientScanner(final Configuration conf, final Scan scan, final TableName tableName, HConnection connection, RpcRetryingCallerFactory rpcFactory, RpcControllerFactory controllerFactory) throws IOException { if (LOG.isTraceEnabled()) { LOG.trace(Scan table= + tableName + , startRow= + Bytes.toStringBinary(scan.getStartRow())); } this.scan = scan; this.tableName = tableName; this.lastNext = System.currentTimeMillis(); this.connection = connection; if (scan.getMaxResultSize() 0) { this.maxScannerResultSize = scan.getMaxResultSize(); } else { this.maxScannerResultSize = conf.getLong( HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY, HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE); } this.scannerTimeout = HBaseConfiguration.getInt(conf, HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY, HConstants.DEFAULT_HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD); // check if application wants to collect scan metrics initScanMetrics(scan); // Use the caching from the Scan. If not set, use the default cache setting for this table. if (this.scan.getCaching() 0) { this.caching = this.scan.getCaching(); } else { this.caching = conf.getInt( HConstants.HBASE_CLIENT_SCANNER_CACHING, HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING); } this.caller = rpcFactory.Result[] newCaller(); this.rpcControllerFactory = controllerFactory; initializeScannerInConstruction(); } -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-13427) HStore#addChangedReaderObserver hotspots due to missing hashCode and equals on StoreScanner
John Leach created HBASE-13427: -- Summary: HStore#addChangedReaderObserver hotspots due to missing hashCode and equals on StoreScanner Key: HBASE-13427 URL: https://issues.apache.org/jira/browse/HBASE-13427 Project: HBase Issue Type: Bug Reporter: John Leach Please see attached graph... -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-13420) RegionEnvironment.offerExecutionLatency Blocks Threads under Heavy Load
John Leach created HBASE-13420: -- Summary: RegionEnvironment.offerExecutionLatency Blocks Threads under Heavy Load Key: HBASE-13420 URL: https://issues.apache.org/jira/browse/HBASE-13420 Project: HBase Issue Type: Improvement Reporter: John Leach The ArrayBlockingQueue blocks threads for 20s during a performance run focusing on creating numerous small scans. I see a buffer size of (100) private final BlockingQueueLong coprocessorTimeNanos = new ArrayBlockingQueueLong( LATENCY_BUFFER_SIZE); and then I see a drain coming from MetricsRegionWrapperImpl with 45 second executor HRegionMetricsWrapperRunable RegionCoprocessorHost#getCoprocessorExecutionStatistics() RegionCoprocessorHost#getExecutionLatenciesNanos() Am I missing something? -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-13379) TimeRangeTracker Can Be Non-Blocking
John Leach created HBASE-13379: -- Summary: TimeRangeTracker Can Be Non-Blocking Key: HBASE-13379 URL: https://issues.apache.org/jira/browse/HBASE-13379 Project: HBase Issue Type: New Feature Reporter: John Leach Priority: Minor I am seeing the TimeRangeTracker hotspot under heavy write load. It looks like a good use case for an atomic reference for the data point (min and max timestamp). I have a working proto, will submit patch for consideration once I run this test suite (beast). -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-13378) RegionScannerImpl synchronized for READ_UNCOMMITTED Isolation Levels
John Leach created HBASE-13378: -- Summary: RegionScannerImpl synchronized for READ_UNCOMMITTED Isolation Levels Key: HBASE-13378 URL: https://issues.apache.org/jira/browse/HBASE-13378 Project: HBase Issue Type: New Feature Reporter: John Leach Priority: Minor This block of code below coupled with the close method could be changed so that READ_UNCOMMITTED does not synchronize. {CODE:JAVA} // synchronize on scannerReadPoints so that nobody calculates // getSmallestReadPoint, before scannerReadPoints is updated. IsolationLevel isolationLevel = scan.getIsolationLevel(); synchronized(scannerReadPoints) { this.readPt = getReadpoint(isolationLevel); scannerReadPoints.put(this, this.readPt); } {CODE} This hotspots for me under heavy get requests. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (HBASE-12912) StoreScanner calls Configuration for Boolean Check on each initialization
John Leach created HBASE-12912: -- Summary: StoreScanner calls Configuration for Boolean Check on each initialization Key: HBASE-12912 URL: https://issues.apache.org/jira/browse/HBASE-12912 Project: HBase Issue Type: Bug Reporter: John Leach Attachments: StoreScannerStall.tiff There is a clear CPU drain and iterator creation when creating store scanners under high load. Splice was running a TPCC test of our database and we are seeing object creation and CPU waste on the boolean check Code Snippet... if (store != null ((HStore)store).getHRegion() != null store.getStorefilesCount() 1) { RegionServerServices rsService = ((HStore)store).getHRegion().getRegionServerServices(); if (rsService == null || !rsService.getConfiguration().getBoolean( STORESCANNER_PARALLEL_SEEK_ENABLE, false)) return; isParallelSeekEnabled = true; executor = rsService.getExecutorService(); } Will attach profile... -- This message was sent by Atlassian JIRA (v6.3.4#6332)