Author: dlanglais Date: 2010-02-17 23:06:29 +0100 (Wed, 17 Feb 2010) New Revision: 97 Modified: trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/HBaseNewBigTable.java Log: Ajout javacode et "synchronized" sur selectedTable pour empecher les acc?\195?\168s concurents sur selectedTable... Modified: trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/HBaseNewBigTable.java =================================================================== --- trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/HBaseNewBigTable.java 2010-02-17 21:56:07 UTC (rev 96) +++ trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/HBaseNewBigTable.java 2010-02-17 22:06:29 UTC (rev 97) @@ -32,14 +32,29 @@ */ private static final Log LOG = LogFactory.getLog(NewBigTable.class); + /** + * HBaseAdmin. + * Permit to manage the HBase. + */ private HBaseAdmin hBaseAdmin; + /** + * HBaseConfiguration. + * Contains the configuration to connect to the HBase. + */ private HBaseConfiguration config; + /** + * The selected Table. + */ private HTable selectedTable; // private HTable table; // private String familyName = "mylittlecolumnfamily"; // private String rowName = "myLittleRow"; // private String tableName = "mylittletable"; + /** + * HBase plugin Constructor. + * @throws MasterNotRunningException + */ public HBaseNewBigTable() throws MasterNotRunningException { // You need a configuration object to tell the client where to connect. // When you create a HBaseConfiguration, it reads in whatever you've set @@ -170,8 +185,11 @@ put.add(column.getBytes(), key.getBytes(), content.getBytes()); //HTable hTable = new HTable(config, table); - this.selectTable(table); - this.selectedTable.put(put); + Result result; + synchronized (selectedTable) { + this.selectTable(table); + this.selectedTable.put(put); + } LOG.trace("put " + table + " " + column + " " + key + " " + content); } catch (IOException ex) { @@ -189,8 +207,11 @@ get = get.addColumn(column.getBytes()); //HTable hTable = new HTable(config, table); - this.selectTable(table); - Result result = this.selectedTable.get(get); + Result result; + synchronized (selectedTable) { + this.selectTable(table); + result = this.selectedTable.get(get); + } ret = result.getCellValue().toString(); @@ -212,8 +233,11 @@ get = get.setTimeStamp(version); //HTable hTable = new HTable(config, table); - this.selectTable(table); - Result result = this.selectedTable.get(get); + Result result; + synchronized (selectedTable) { + this.selectTable(table); + result = this.selectedTable.get(get); + } ret = result.getCellValue().toString(); @@ -236,9 +260,12 @@ get = get.addColumn(column.getBytes()); //HTable hTable = new HTable(config, table); - this.selectTable(table); - Result result = this.selectedTable.get(get); - + Result result; + synchronized (selectedTable) { + this.selectTable(table); + result = this.selectedTable.get(get); + } + String columnContent = result.getCellValue().toString(); ret.put(column, columnContent); @@ -258,13 +285,15 @@ public Set<String> getKeys(String table) { Set<String> ret = new HashSet<String>(); try { - //HTable hTable = new HTable(config, table); - this.selectTable(table); - Set<byte[]> familiesKeys; - familiesKeys = - this.selectedTable.getTableDescriptor().getFamiliesKeys(); - for (byte[] key : familiesKeys) { - ret.add(key.toString()); + + synchronized (selectedTable) { + this.selectTable(table); + Set<byte[]> familiesKeys; + familiesKeys = + this.selectedTable.getTableDescriptor().getFamiliesKeys(); + for (byte[] key : familiesKeys) { + ret.add(key.toString()); + } } } catch (IOException ex) {