GitHub user phrocker opened a pull request:

    https://github.com/apache/accumulo/pull/199

    DO NOT MERGE: PROOF OF CONCEPT

    Hello this is a proof of concept that will hopefully begin the discussion 
of changing how we request resources.
    
    First of all there are a lot of changes here. That's primarily because I'm 
more focused on getting some ideas out there and getting feedback so that I can 
provide a solid design to the community. There are commits from 2015 in here 
because I took code from a previous commit that I wanted to include.
    
    The basic concept and what I want from this PR is how do we modify the API 
so that we can define resources intelligently AND allow users to request users 
within some bounds
    
    I spoke to @keith-turner and @ctubbsii  today. We can break this up into 
the following ideas.
    
    1) Allow configuration to define resource pools ( memory, cpu, etc ) What 
will this look like? How do we constrain this?
    2) Define a way of segmenting tables/pools. Right now I have included code 
I've used elsewhere to define table specific threadpools, but I think we need 
to be more fine grained. But how do we define resource groups? Right now I've 
created a stubbed out object called ResourceRequest. That needs to be better 
defined, which I will do in the coming days and welcome feedback.
    3) How do we  define limits on user request? Clearly I've modify the thrift 
calls so that we can allow scans to create resource requests, but is this a 
good idea? If so, should we create a new permission? How do we avoid abuse with 
resource requests?
    4) Can we eliminate some of our current resource constraints and merge them 
into this concept? I.e. can we get rid of max open files? Can we extend this 
concept to be aware of resources consumed by compactions? 
    5) Could we potentially define more concrete critical sections? 
    
    Please ignore the badness in the PR -- I can guarantee that it doesn't 
compile. I took a vacation and told @keith-turner  I'd put this up here because 
I think getting ideas now will serve us better. I'm going to clean this up a 
great deal in the next few days so that I can have others help on this. I will 
attach tickets to this PR as I have a previous ticket that corresponds to this; 
however, I'd welcome input into the list above. 
    
    I will update this PR tomorrow with cleanup and begin stubbing out portions 
from the list above and other ideas that are presented. Bottom line, what's 
your sticking point with how tasks run in Accumulo and is there anything we can 
do to improve it? 
    


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/phrocker/accumulo-1 master

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/accumulo/pull/199.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #199
    
----
commit bbd2257a001d654a87b433bb387ad9fce402dbb8
Author: phrocker <[email protected]>
Date:   2015-12-31T15:16:49Z

    ACCUMULO-3509: Allow cleanup state to be kept to avoid blocking tserver 
session sweep
    
    By enabling state ( true/false) from the cleanup method, the change will 
avoid blocking
    on a scan session being swept. if the session cleanup blocks because a 
ScanSession is
    still being read, we may block until the ScanBatch returns for that 
ScanSession.
    
    The change uses a simple semaphore ( purely because I like the word ) to 
attempt acquisition.
    If that fails, we return false from the cleanup and reintroduce that 
Session back into
    the queue to clean up.

commit 3cd07f03104ef8382afd740de82efdfa2e682f73
Author: Marc <[email protected]>
Date:   2017-01-10T01:20:11Z

    THIS IS A POC PR

commit 0fcf266560461c04bcdf7511128d7f6c0a182c26
Author: Marc <[email protected]>
Date:   2017-01-10T01:24:29Z

    Merge branch 'master' of https://github.com/phrocker/accumulo-1

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to