[ 
https://issues.apache.org/jira/browse/PHOENIX-1676?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14340857#comment-14340857
 ] 

Thomas D'Silva commented on PHOENIX-1676:
-----------------------------------------

I also tried creating a simple htable, but IndexQosRpcController.setPriority is 
not getting called for this table.  

{code}
 @Test
    public void testTableWriteWithQos() throws Exception {
        final TableName tableName = TableName.valueOf("TEST");
        Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
        Connection conn = driver.connect(url, props);
        
        PhoenixConnection phoenixConn = conn.unwrap(PhoenixConnection.class);
        HBaseAdmin admin = phoenixConn.getQueryServices().getAdmin();
        byte[][] SPLITS = new byte[][] {Bytes.toBytes(20), Bytes.toBytes(30)};
        try {
            // Create table then get the single region for our new table.
            HTableDescriptor descriptor = new HTableDescriptor(tableName);
            HColumnDescriptor columnDescriptor =  new 
HColumnDescriptor(Bytes.toBytes("cf"));
            descriptor.addFamily(columnDescriptor);
            admin.createTable(descriptor, SPLITS);
            HTableInterface t = 
phoenixConn.getQueryServices().getTable(Bytes.toBytes("TEST"));
            byte[] k1 = Bytes.toBytes(15);
            Put p = new Put(k1);
            p.add(Bytes.toBytes("cf"), Bytes.toBytes("q1"), 
Bytes.toBytes("value1"));
            t.put(p);
            byte[] k2 = Bytes.toBytes(25);
            p = new Put(k2);
            p.add(Bytes.toBytes("cf"), Bytes.toBytes("q2"), 
Bytes.toBytes("value2"));
            t.put(p);
            byte[] k3 = Bytes.toBytes(35);
            p = new Put(k3);
            p.add(Bytes.toBytes("cf"), Bytes.toBytes("q3"), 
Bytes.toBytes("value3"));
            t.put(p);
            t.flushCommits();
            admin.flush(tableName.getName());
            
            Result r = t.get(new Get(k1));
            assertFalse(r.isEmpty());
            r = t.get(new Get(k2));
            assertFalse(r.isEmpty());
            r = t.get(new Get(k3));
            assertFalse(r.isEmpty());
            t.close();
        } finally {
            admin.close();
        }
    }
{:code}

> Set priority of Index Updates correctly 
> ----------------------------------------
>
>                 Key: PHOENIX-1676
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1676
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Thomas D'Silva
>            Assignee: Thomas D'Silva
>
> I spoke to Jesse offline about this. 
> The priority of index updates isn't being set correctly because of the use of 
> CoprocessorHConnection (which all coprocessors use if they create an HTable 
> via the CPEnvironment).
> Specifically the flow happens like this: the CoprocessorHTableFactory 
> attempts to set the connection qos factory, but it is ignored because the 
> CoprocessorHConnection is used (instead of a standard HConnection) and the 
> #getClient method just goes straight into the rpc scheduler of the 
> HRegionServer, if its on the same server. This allows the region to be 
> directly accessed, but without actually going over the loopback or 
> serializing any information.
> However, this means it ignores the configured rpccontroller factory and the 
> override setting of the rpc priority. We probably shouldn't be runtime 
> changing the configuration - instead we should probably be using some other 
> serialized information.
> The primary fix would seems to be that the regionserver needs to be 
> configured with the IndexQosRpcControllerFactory and then use a static map 
> (or cache of the index metadata) to set the qos for the index servers. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to