You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by dh...@apache.org on 2008/09/17 22:13:01 UTC
svn commit: r696427 [4/4] - in /hadoop/core/trunk: ./ src/contrib/hive/
src/contrib/hive/conf/ src/contrib/hive/metastore/if/
src/contrib/hive/metastore/src/gen-py/hive_metastore/
src/contrib/hive/metastore/src/java/org/apache/hadoop/hive/metastore/
Modified: hadoop/core/trunk/src/contrib/hive/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/hive/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java?rev=696427&r1=696426&r2=696427&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/hive/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java (original)
+++ hadoop/core/trunk/src/contrib/hive/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java Wed Sep 17 13:13:00 2008
@@ -30,7 +30,6 @@
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
import org.apache.hadoop.hive.metastore.api.AlreadyExistsException;
import org.apache.hadoop.hive.metastore.api.Database;
import org.apache.hadoop.hive.metastore.api.FieldSchema;
@@ -57,10 +56,12 @@
import com.facebook.fb303.FacebookService;
import com.facebook.fb303.fb_status;
import com.facebook.thrift.TException;
+import com.facebook.thrift.protocol.TBinaryProtocol;
import com.facebook.thrift.server.TServer;
import com.facebook.thrift.server.TThreadPoolServer;
import com.facebook.thrift.transport.TServerSocket;
import com.facebook.thrift.transport.TServerTransport;
+import com.facebook.thrift.transport.TTransportFactory;
/**
* TODO:pc remove application logic to a separate interface. rename to MetaStoreServer
@@ -68,11 +69,28 @@
public class HiveMetaStore extends ThriftHiveMetastore {
public static class HMSHandler extends FacebookBase implements ThriftHiveMetastore.Iface{
- public static final Log LOG = LogFactory.getLog("hive.metastore");
+ public static final Log LOG = LogFactory.getLog(HiveMetaStore.class.getName());
+ private static boolean createDefaultDB = false;
+ private String rawStoreClassName;
private HiveConf hiveConf; // stores datastore (jpox) properties, right now they come from jpox.properties
- private RawStore ms; // a metadata store
private Warehouse wh; // hdfs warehouse
-
+ private ThreadLocal<RawStore> threadLocalMS = new ThreadLocal() {
+ protected synchronized Object initialValue() {
+ return null;
+ }
+ };
+
+ // The next serial number to be assigned
+ private static int nextSerialNum = 0;
+ private static ThreadLocal<Integer> threadLocalId = new ThreadLocal() {
+ protected synchronized Object initialValue() {
+ return new Integer(nextSerialNum++);
+ }
+ };
+ public static Integer get() {
+ return threadLocalId.get();
+ }
+
public HMSHandler(String name) throws MetaException {
super(name);
hiveConf = new HiveConf(this.getClass());
@@ -94,18 +112,42 @@
}
private boolean init() throws MetaException {
- String rawStoreClassName = hiveConf.get("hive.metastore.rawstore.impl");
+ rawStoreClassName = hiveConf.get("hive.metastore.rawstore.impl");
wh = new Warehouse(hiveConf);
- LOG.info("Opening raw store ... impl class:" + rawStoreClassName);
- ms = (RawStore) ReflectionUtils.newInstance(getClass(rawStoreClassName, RawStore.class), hiveConf);
- // create default database if it doesn't exist
+ createDefaultDB();
+ return true;
+ }
+
+ /**
+ * @return
+ * @throws MetaException
+ */
+ private RawStore getMS() throws MetaException {
+ RawStore ms = threadLocalMS.get();
+ if(ms == null) {
+ LOG.info(threadLocalId.get() + ": Opening raw store with implemenation class:" + rawStoreClassName);
+ ms = (RawStore) ReflectionUtils.newInstance(getClass(rawStoreClassName, RawStore.class), hiveConf);
+ threadLocalMS.set(ms);
+ ms = threadLocalMS.get();
+ }
+ return ms;
+ }
+
+ /**
+ * create default database if it doesn't exist
+ * @throws MetaException
+ */
+ private void createDefaultDB() throws MetaException {
+ if(HMSHandler.createDefaultDB) {
+ return;
+ }
try {
- ms.getDatabase(MetaStoreUtils.DEFAULT_DATABASE_NAME);
+ getMS().getDatabase(MetaStoreUtils.DEFAULT_DATABASE_NAME);
} catch (NoSuchObjectException e) {
- ms.createDatabase(new Database(MetaStoreUtils.DEFAULT_DATABASE_NAME,
+ getMS().createDatabase(new Database(MetaStoreUtils.DEFAULT_DATABASE_NAME,
wh.getDefaultDatabasePath(MetaStoreUtils.DEFAULT_DATABASE_NAME).toString()));
}
- return true;
+ HMSHandler.createDefaultDB = true;
}
private Class<?> getClass(String rawStoreClassName, Class<RawStore> class1) throws MetaException {
@@ -115,31 +157,46 @@
throw new MetaException(rawStoreClassName + " class not found");
}
}
+
+ private void logStartFunction(String m) {
+ LOG.info(threadLocalId.get().toString() + ": " + m);
+ }
+ private void logStartFunction(String f, String db, String tbl) {
+ LOG.info(threadLocalId.get().toString() + ": " + f + " : db=" + db + " tbl=" + tbl);
+ }
+
@Override
public int getStatus() {
return fb_status.ALIVE;
}
public void shutdown() {
- LOG.info("Shutting down the object store...");
- ms.shutdown();
- super.shutdown();
+ logStartFunction("Shutting down the object store...");
+ try {
+ if(threadLocalMS.get() != null) {
+ getMS().shutdown();
+ }
+ } catch (MetaException e) {
+ LOG.error("unable to shutdown metastore", e);
+ }
+ System.exit(0);
}
public boolean create_database(String name, String location_uri)
throws AlreadyExistsException, MetaException {
this.incrementCounter("create_database");
+ logStartFunction("create_database: " + name);
boolean success = false;
try {
- ms.openTransaction();
+ getMS().openTransaction();
Database db = new Database(name, location_uri);
- if(ms.createDatabase(db) && wh.mkdirs(wh.getDefaultDatabasePath(name))) {
- success = ms.commitTransaction();
+ if(getMS().createDatabase(db) && wh.mkdirs(wh.getDefaultDatabasePath(name))) {
+ success = getMS().commitTransaction();
}
} finally {
if(!success) {
- ms.rollbackTransaction();
+ getMS().rollbackTransaction();
}
}
return success;
@@ -147,24 +204,25 @@
public Database get_database(String name) throws NoSuchObjectException, MetaException {
this.incrementCounter("get_database");
- return ms.getDatabase(name);
+ logStartFunction("get_database: " + name);
+ return getMS().getDatabase(name);
}
public boolean drop_database(String name) throws MetaException {
this.incrementCounter("drop_database");
+ logStartFunction("drop_database: " + name);
if(name.equalsIgnoreCase(MetaStoreUtils.DEFAULT_DATABASE_NAME)) {
throw new MetaException("Can't drop default database");
}
boolean success = false;
try {
- ms.openTransaction();
- success = ms.dropDatabase(name);
- if(ms.dropDatabase(name)) {
- success = ms.commitTransaction();
+ getMS().openTransaction();
+ if(getMS().dropDatabase(name)) {
+ success = getMS().commitTransaction();
}
} finally {
if(!success) {
- ms.rollbackTransaction();
+ getMS().rollbackTransaction();
} else {
wh.deleteDir(wh.getDefaultDatabasePath(name), true);
// it is not a terrible thing even if the data is not deleted
@@ -175,45 +233,51 @@
public List<String> get_databases() throws MetaException {
this.incrementCounter("get_databases");
- return ms.getDatabases();
+ logStartFunction("get_databases");
+ return getMS().getDatabases();
}
public boolean create_type(Type type) throws AlreadyExistsException, MetaException, InvalidObjectException {
this.incrementCounter("create_type");
+ logStartFunction("create_type: " + type.getName());
// check whether type already exists
if(get_type(type.getName()) != null) {
throw new AlreadyExistsException("Type " + type.getName() + " already exists");
}
//TODO:pc Validation of types should be done by clients or here????
- return ms.createType(type);
+ return getMS().createType(type);
}
public Type get_type(String name) throws MetaException {
this.incrementCounter("get_type");
- return ms.getType(name);
+ logStartFunction("get_type: " + name);
+ return getMS().getType(name);
}
- public boolean drop_type(String type) throws MetaException {
+ public boolean drop_type(String name) throws MetaException {
this.incrementCounter("drop_type");
+ logStartFunction("drop_type: " + name);
// TODO:pc validate that there are no types that refer to this
- return ms.dropType(type);
+ return getMS().dropType(name);
}
public Map<String, Type> get_type_all(String name) throws MetaException {
this.incrementCounter("get_type_all");
// TODO Auto-generated method stub
- return null;
+ logStartFunction("get_type_all");
+ throw new MetaException("Not yet implemented");
}
public void create_table(Table tbl) throws AlreadyExistsException, MetaException, InvalidObjectException {
this.incrementCounter("create_table");
+ logStartFunction("create_table: db=" + tbl.getDatabase() + " tbl=" + tbl.getTableName());
boolean success = false;
if(!MetaStoreUtils.validateName(tbl.getTableName())) {
throw new InvalidObjectException(tbl.getTableName() + " is not a valid object name");
}
try {
- ms.openTransaction();
+ getMS().openTransaction();
Path tblPath = null;
if(tbl.getSd().getLocation() == null || tbl.getSd().getLocation().isEmpty()) {
tblPath = wh.getDefaultTablePath(tbl.getDatabase(), tbl.getTableName());
@@ -228,24 +292,25 @@
}
} catch (NoSuchObjectException e) {
}
- ms.createTable(tbl);
+ getMS().createTable(tbl);
if(wh.mkdirs(tblPath)) {
- success = ms.commitTransaction();
+ success = getMS().commitTransaction();
}
} finally {
if(!success) {
- ms.rollbackTransaction();
+ getMS().rollbackTransaction();
}
}
}
public void drop_table(String dbname, String name, boolean deleteData) throws NoSuchObjectException, MetaException {
this.incrementCounter("drop_table");
+ logStartFunction("drop_table", dbname, name);
boolean success = false;
Path tblPath = null;
try {
- ms.openTransaction();
+ getMS().openTransaction();
// drop any partitions
Table tbl = get_table(dbname, name);
if (tbl == null) {
@@ -254,14 +319,14 @@
if(tbl.getSd() == null || tbl.getSd().getLocation() == null) {
throw new MetaException("Table metadata is corrupted");
}
- if(!ms.dropTable(dbname, name)) {
+ if(!getMS().dropTable(dbname, name)) {
throw new MetaException("Unable to drop table");
}
- success = ms.commitTransaction();
+ success = getMS().commitTransaction();
tblPath = new Path(tbl.getSd().getLocation());
} finally {
if(!success) {
- ms.rollbackTransaction();
+ getMS().rollbackTransaction();
} else if(deleteData && (tblPath != null)) {
wh.deleteDir(tblPath, true);
// ok even if the data is not deleted
@@ -271,7 +336,8 @@
public Table get_table(String dbname, String name) throws MetaException, NoSuchObjectException {
this.incrementCounter("get_table");
- Table t = ms.getTable(dbname, name);
+ logStartFunction("get_table", dbname, name);
+ Table t = getMS().getTable(dbname, name);
if(t == null) {
throw new NoSuchObjectException(dbname + "." + name + " table not found");
}
@@ -282,6 +348,7 @@
Map<String, String> params) throws NoSuchObjectException,
MetaException {
this.incrementCounter("set_table_parameters");
+ logStartFunction("set_table_parameters", dbname, name);
// TODO Auto-generated method stub
return false;
}
@@ -289,16 +356,22 @@
public Partition append_partition(String dbName, String tableName, List<String> part_vals)
throws InvalidObjectException, AlreadyExistsException, MetaException {
this.incrementCounter("append_partition");
+ logStartFunction("append_partition", dbName, tableName);
Partition part = new Partition();
boolean success = false;
try {
- ms.openTransaction();
+ getMS().openTransaction();
part = new Partition();
part.setDatabase(dbName);
part.setTableName(tableName);
part.setValues(part_vals);
- Table tbl = ms.getTable(part.getDatabase(), part.getTableName());
+ Partition old_part = this.get_partition(part.getDatabase(), part.getTableName(), part.getValues());
+ if( old_part != null) {
+ throw new AlreadyExistsException("Partition already exists:" + part);
+ }
+
+ Table tbl = getMS().getTable(part.getDatabase(), part.getTableName());
if(tbl == null) {
throw new InvalidObjectException("Unable to add partition because table or database do not exist");
}
@@ -306,16 +379,16 @@
Path partLocation = new Path(tbl.getSd().getLocation(), Warehouse.makePartName(tbl.getPartitionKeys(), part_vals));
part.getSd().setLocation(partLocation.toString());
- success = ms.addPartition(part);
+ success = getMS().addPartition(part);
if(success) {
- success = ms.commitTransaction();
+ success = getMS().commitTransaction();
}
} finally {
if(!success) {
- ms.rollbackTransaction();
+ getMS().rollbackTransaction();
} else {
Path path = new Path(part.getSd().getLocation());
- MetaStoreUtils.makeDir(path, hiveConf);
+ wh.mkdirs(path);
}
}
return part;
@@ -324,24 +397,29 @@
public Partition add_partition(Partition part) throws InvalidObjectException,
AlreadyExistsException, MetaException {
this.incrementCounter("add_partition");
+ logStartFunction("add_partition", part.getDatabase(), part.getTableName());
boolean success = false;
try {
- ms.openTransaction();
- Table tbl = ms.getTable(part.getDatabase(), part.getTableName());
+ getMS().openTransaction();
+ Partition old_part = this.get_partition(part.getDatabase(), part.getTableName(), part.getValues());
+ if( old_part != null) {
+ throw new AlreadyExistsException("Partition already exists:" + part);
+ }
+ Table tbl = getMS().getTable(part.getDatabase(), part.getTableName());
if(tbl == null) {
throw new InvalidObjectException("Unable to add partition because table or database do not exist");
}
// add partition
- success = ms.addPartition(part);
+ success = getMS().addPartition(part);
if(success) {
- success = ms.commitTransaction();
+ success = getMS().commitTransaction();
}
} finally {
if(!success) {
- ms.rollbackTransaction();
+ getMS().rollbackTransaction();
} else {
Path path = new Path(part.getSd().getLocation());
- MetaStoreUtils.makeDir(path, hiveConf);
+ wh.mkdirs(path);
}
}
return part;
@@ -350,54 +428,62 @@
public boolean drop_partition(String db_name, String tbl_name, List<String> part_vals, boolean deleteData) throws NoSuchObjectException, MetaException,
TException {
this.incrementCounter("drop_partition");
+ logStartFunction("drop_partition", db_name, tbl_name);
// TODO:pc drop the data as needed
- return ms.dropPartition(db_name, tbl_name, part_vals);
+ return getMS().dropPartition(db_name, tbl_name, part_vals);
}
public Partition get_partition(String db_name, String tbl_name, List<String> part_vals)
throws MetaException {
this.incrementCounter("get_partition");
- return ms.getPartition(db_name, tbl_name, part_vals);
+ logStartFunction("get_partition", db_name, tbl_name);
+ return getMS().getPartition(db_name, tbl_name, part_vals);
}
public List<Partition> get_partitions(String db_name, String tbl_name, short max_parts)
throws NoSuchObjectException, MetaException {
this.incrementCounter("get_partitions");
- return ms.getPartitions(db_name, tbl_name, max_parts);
+ logStartFunction("get_partitions", db_name, tbl_name);
+ return getMS().getPartitions(db_name, tbl_name, max_parts);
}
public boolean alter_partitions(StorageDescriptor sd, List<String> parts) throws InvalidOperationException,
MetaException {
this.incrementCounter("alter_partitions");
+ logStartFunction("alter_partitions");
// TODO Auto-generated method stub
- return false;
+ throw new MetaException("Not yet implemented");
}
public boolean set_partition_parameters(String db_name, String tbl_name, String pname, Map<String, String> params) throws NoSuchObjectException,
MetaException {
this.incrementCounter("set_partition_parameters");
+ logStartFunction("set_partition_parameters: db=" + db_name + " tbl=" + tbl_name);
// TODO Auto-generated method stub
- return false;
+ throw new MetaException("Not yet implemented");
}
public boolean create_index(Index index_def)
throws IndexAlreadyExistsException, MetaException {
this.incrementCounter("create_index");
+ logStartFunction("truncate_table: db=" + index_def.getTableName() + " tbl=" + index_def.getTableName() + " name=" + index_def.getIndexName());
// TODO Auto-generated method stub
- return false;
+ throw new MetaException("Not yet implemented");
}
public String getVersion() throws TException {
this.incrementCounter("getVersion");
+ logStartFunction("getVersion");
return "3.0";
}
public void alter_table(String dbname, String name, Table newTable) throws InvalidOperationException,
MetaException {
this.incrementCounter("alter_table");
+ logStartFunction("truncate_table: db=" + dbname + " tbl=" + name + " newtbl=" + newTable.getTableName());
try {
- ms.alterTable(dbname, name, newTable);
+ getMS().alterTable(dbname, name, newTable);
} catch (InvalidObjectException e) {
LOG.error(StringUtils.stringifyException(e));
throw new InvalidOperationException("alter is not possible");
@@ -408,14 +494,16 @@
public List<String> cat(String db_name, String table_name, String partition, int high)
throws MetaException, UnknownDBException, UnknownTableException {
this.incrementCounter("cat");
+ logStartFunction("cat: db=" + db_name + " tbl=" + table_name + " part=" + partition + " high=" + high);
// TODO Auto-generated method stub
- return null;
+ throw new MetaException("Not implemented. Please use select * query instead");
}
@Override
public List<String> get_tables(String dbname, String pattern) throws MetaException {
this.incrementCounter("get_tables");
- return ms.getTables(dbname, pattern);
+ logStartFunction("get_tables: db=" + dbname + " pat=" + pattern);
+ return getMS().getTables(dbname, pattern);
}
@Override
@@ -423,6 +511,7 @@
throws MetaException, UnknownTableException, UnknownDBException {
// TODO Auto-generated method stub
this.incrementCounter("truncate_table");
+ logStartFunction("truncate_table: db=" + db_name + " tbl=" + table_name);
}
/**
@@ -479,10 +568,11 @@
return ret;
}
- public ArrayList<FieldSchema> get_fields(String db, String table_name) throws MetaException,UnknownTableException, UnknownDBException {
+ public ArrayList<FieldSchema> get_fields(String db, String tableName) throws MetaException,UnknownTableException, UnknownDBException {
this.incrementCounter("get_fields");
+ logStartFunction("get_fields: db=" + db + "tbl=" + tableName);
ArrayList<FieldSchema> str_fields = new ArrayList<FieldSchema>();
- String [] names = table_name.split("\\.");
+ String [] names = tableName.split("\\.");
String base_table_name = names[0];
List<SerDeField> hive_fields = new ArrayList<SerDeField>();
@@ -531,7 +621,7 @@
}
}
}
-
+
/**
* @param args
*/
@@ -545,15 +635,18 @@
TServerTransport serverTransport = new TServerSocket(port);
Iface handler = new HMSHandler("new db based metaserver");
FacebookService.Processor processor = new ThriftHiveMetastore.Processor(handler);
- TServer server = new TThreadPoolServer(processor, serverTransport);
- HMSHandler.LOG.info("Starting the new metaserver on port [" + port + "]...");
-
+ TThreadPoolServer.Options options = new TThreadPoolServer.Options();
+ options.minWorkerThreads = 200;
+ TServer server = new TThreadPoolServer(processor, serverTransport,
+ new TTransportFactory(), new TTransportFactory(),
+ new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(), options);
+ HMSHandler.LOG.info("Started the new metaserver on port [" + port + "]...");
+ HMSHandler.LOG.info("Options.minWorkerThreads = " + options.minWorkerThreads);
+ HMSHandler.LOG.info("Options.maxWorkerThreads = " + options.maxWorkerThreads);
server.serve();
-
} catch (Exception x) {
x.printStackTrace();
}
}
-
}
Modified: hadoop/core/trunk/src/contrib/hive/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/hive/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java?rev=696427&r1=696426&r2=696427&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/hive/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java (original)
+++ hadoop/core/trunk/src/contrib/hive/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java Wed Sep 17 13:13:00 2008
@@ -34,6 +34,7 @@
import javax.jdo.PersistenceManagerFactory;
import javax.jdo.Query;
import javax.jdo.Transaction;
+import javax.jdo.datastore.DataStoreCache;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -70,18 +71,26 @@
public class ObjectStore implements RawStore, Configurable {
@SuppressWarnings("nls")
private static final String JPOX_CONFIG = "jpox.properties";
- private static Properties prop;
+ private static Properties prop = null;
+ private static PersistenceManagerFactory pmf = null;
+ private static final Log LOG = LogFactory.getLog(ObjectStore.class.getName());
+ private static enum TXN_STATUS {
+ NO_STATE,
+ OPEN,
+ COMMITED,
+ ROLLBACK
+ }
private boolean isInitialized = false;
private PersistenceManager pm = null;
private Configuration hiveConf;
- @SuppressWarnings("nls")
- public static final Log LOG = LogFactory.getLog(ObjectStore.class.getName());
+ private int openTrasactionCalls = 0;
+ private Transaction currentTransaction = null;
+ private TXN_STATUS transactionStatus = TXN_STATUS.NO_STATE;
public ObjectStore() {}
@Override
public Configuration getConf() {
- // TODO Auto-generated method stub
return hiveConf;
}
@@ -112,8 +121,8 @@
@SuppressWarnings("nls")
private void initialize() {
LOG.info("ObjectStore, initialize called");
- getDataSourceProps();
- pm = createPersistenceManager();
+ initDataSourceProps();
+ pm = getPersistenceManager();
if(pm != null)
isInitialized = true;
return;
@@ -124,7 +133,10 @@
* jpox.properties.
*/
@SuppressWarnings("nls")
- private void getDataSourceProps() {
+ private void initDataSourceProps() {
+ if(prop != null) {
+ return;
+ }
URL url= classLoader.getResource(JPOX_CONFIG);
prop = new Properties();
if (url == null) {
@@ -167,10 +179,26 @@
prop.setProperty(param, val);
}
}
-
- private static PersistenceManager createPersistenceManager() {
- PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory(prop);
- return pmf.getPersistenceManager();
+ private static PersistenceManagerFactory getPMF() {
+ if(pmf == null) {
+ pmf = JDOHelper.getPersistenceManagerFactory(prop);
+ DataStoreCache dsc = pmf.getDataStoreCache();
+ if(dsc != null) {
+ dsc.pinAll(true, MTable.class);
+ dsc.pinAll(true, MStorageDescriptor.class);
+ dsc.pinAll(true, MSerDeInfo.class);
+ dsc.pinAll(true, MPartition.class);
+ dsc.pinAll(true, MDatabase.class);
+ dsc.pinAll(true, MType.class);
+ dsc.pinAll(true, MFieldSchema.class);
+ dsc.pinAll(true, MOrder.class);
+ }
+ }
+ return pmf;
+ }
+
+ private PersistenceManager getPersistenceManager() {
+ return getPMF().getPersistenceManager();
}
public void shutdown() {
@@ -179,16 +207,6 @@
}
}
- private int openTrasactionCalls = 0;
- private Transaction currentTransaction = null;
- private static enum TXN_STATUS {
- NO_STATE,
- OPEN,
- COMMITED,
- ROLLBACK
- }
- private TXN_STATUS transactionStatus = TXN_STATUS.NO_STATE;
-
/**
* Opens a new one or the one already created
* Every call of this function must have corresponding commit or rollback function call
@@ -621,7 +639,7 @@
private List<Order> convertToOrders(List<MOrder> mkeys) {
List<Order> keys = null;
if(mkeys != null) {
- keys = new ArrayList<Order>(mkeys.size());
+ keys = new ArrayList<Order>();
for (MOrder part : mkeys) {
keys.add(new Order(part.getCol(), part.getOrder()));
}
@@ -817,8 +835,8 @@
query.declareParameters("java.lang.String t1, java.lang.String t2");
mparts = (List<MPartition>) query.execute(tableName.trim(), dbName.trim());
pm.retrieveAll(mparts);
-
success = commitTransaction();
+ LOG.debug("Done e xecuting listMPartitions");
} finally {
if(!success) {
rollbackTransaction();