summaryrefslogtreecommitdiff
path: root/java/src/Freeze/ObjectStore.java
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2014-10-20 11:40:05 -0230
committerMatthew Newhook <matthew@zeroc.com>2014-10-20 11:40:05 -0230
commitb51469b41167fb86ae2059a15cf0475c53fdda7b (patch)
treefc85d6ca2efd89c67e1e4e7438f437c3e08313f4 /java/src/Freeze/ObjectStore.java
parentFixed (ICE-5695) - IceSSL: misleading exception (diff)
downloadice-b51469b41167fb86ae2059a15cf0475c53fdda7b.tar.bz2
ice-b51469b41167fb86ae2059a15cf0475c53fdda7b.tar.xz
ice-b51469b41167fb86ae2059a15cf0475c53fdda7b.zip
Down with ant. From the gradle to the grave.
Diffstat (limited to 'java/src/Freeze/ObjectStore.java')
-rw-r--r--java/src/Freeze/ObjectStore.java698
1 files changed, 0 insertions, 698 deletions
diff --git a/java/src/Freeze/ObjectStore.java b/java/src/Freeze/ObjectStore.java
deleted file mode 100644
index fcd3253dab0..00000000000
--- a/java/src/Freeze/ObjectStore.java
+++ /dev/null
@@ -1,698 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice is licensed to you under the terms described in the
-// ICE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-package Freeze;
-
-class ObjectStore implements IceUtil.Store
-{
- ObjectStore(String facet, String facetType, boolean createDb, EvictorI evictor, java.util.List<Index> indices,
- boolean populateEmptyIndices)
- {
- _cache = new IceUtil.Cache(this);
-
- _facet = facet;
-
- _evictor = evictor;
- _indices = indices;
- _communicator = evictor.communicator();
- _encoding = evictor.encoding();
- _keepStats = false;
-
- if(facet.equals(""))
- {
- _dbName = EvictorI.defaultDb;
- }
- else
- {
- _dbName = facet;
- }
-
- if(facetType != null)
- {
- //
- // Create a sample servant with this type
- //
- Ice.ObjectFactory factory = _communicator.findObjectFactory(facetType);
- if(factory == null)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "No object factory registered for type-id '" +
- facetType + "'");
- }
-
- _sampleServant = factory.create(facetType);
- }
-
- Connection connection = Util.createConnection(_communicator, evictor.dbEnv().getEnvName());
-
- try
- {
- Catalog catalog = new Catalog(connection, Util.catalogName(), true);
- CatalogData catalogData = catalog.get(evictor.filename());
-
- if(catalogData != null)
- {
- if(catalogData.evictor)
- {
- _keepStats = catalogData.value.isEmpty();
- }
- else
- {
- DatabaseException ex = new DatabaseException();
- ex.message = _evictor.errorPrefix() + evictor.filename() + " is not an evictor database";
- throw ex;
- }
- }
-
- com.sleepycat.db.Environment dbEnv = evictor.dbEnv().getEnv();
-
- //
- // TODO: FREEZE_DB_MODE
- //
- com.sleepycat.db.DatabaseConfig config = new com.sleepycat.db.DatabaseConfig();
- config.setType(com.sleepycat.db.DatabaseType.BTREE);
- config.setAllowCreate(createDb);
-
- Ice.Properties properties = _evictor.communicator().getProperties();
- String propPrefix = "Freeze.Evictor." + _evictor.filename() + ".";
-
- int btreeMinKey = properties.getPropertyAsInt(propPrefix + _dbName + ".BtreeMinKey");
- if(btreeMinKey > 2)
- {
- if(_evictor.trace() >= 1)
- {
- _evictor.communicator().getLogger().trace(
- "Freeze.Evictor", "Setting \"" + _evictor.filename() + "." + _dbName +
- "\"'s btree minkey to " + btreeMinKey);
- }
- config.setBtreeMinKey(btreeMinKey);
- }
-
- boolean checksum = properties.getPropertyAsInt(propPrefix + "Checksum") > 0;
- if(checksum)
- {
- if(_evictor.trace() >= 1)
- {
- _evictor.communicator().getLogger().trace(
- "Freeze.Evictor", "Turning checksum on for \"" + _evictor.filename() + "\"");
- }
-
- config.setChecksum(true);
- }
-
- int pageSize = properties.getPropertyAsInt(propPrefix + "PageSize");
- if(pageSize > 0)
- {
- if(_evictor.trace() >= 1)
- {
- _evictor.communicator().getLogger().trace(
- "Freeze.Evictor", "Setting \"" + _evictor.filename() + "\"'s pagesize to " + pageSize);
- }
- config.setPageSize(pageSize);
- }
-
- try
- {
- Transaction tx = connection.beginTransaction();
- com.sleepycat.db.Transaction txn = Util.getTxn(tx);
-
- _db = dbEnv.openDatabase(txn, evictor.filename(), _dbName, config);
-
- for(Index index : _indices)
- {
- index.associate(this, txn, createDb, populateEmptyIndices);
- }
-
- if(catalogData == null)
- {
- catalogData = new CatalogData(true, "::Ice::Identity", "Object");
- catalog.put(evictor.filename(), catalogData);
- }
-
- tx.commit();
- }
- catch(java.io.FileNotFoundException dx)
- {
- throw new NotFoundException(_evictor.errorPrefix() + "Db.open: " + dx.getMessage(), dx);
- }
- catch(com.sleepycat.db.DatabaseException dx)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "Db.open: " + dx.getMessage(), dx);
- }
- finally
- {
- Transaction tx = connection.currentTransaction();
- if(tx != null)
- {
- try
- {
- tx.rollback();
- }
- catch(DatabaseException de)
- {
- }
- }
- }
- }
- finally
- {
- connection.close();
- }
- }
-
- void
- close()
- {
- try
- {
- _db.close();
-
- for(Index index : _indices)
- {
- index.close();
- }
- _indices.clear();
- }
- catch(com.sleepycat.db.DatabaseException dx)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "Db.close: " + dx.getMessage(), dx);
- }
- _db = null;
- }
-
- boolean
- dbHasObject(Ice.Identity ident, TransactionI transaction)
- {
- com.sleepycat.db.Transaction tx = null;
-
- if(transaction != null)
- {
- tx = transaction.dbTxn();
- if(tx == null)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "inactive transaction");
- }
- }
-
- com.sleepycat.db.DatabaseEntry dbKey = marshalKey(ident, _communicator, _encoding);
-
- //
- // Keep 0 length since we're not interested in the data
- //
- com.sleepycat.db.DatabaseEntry dbValue = new com.sleepycat.db.DatabaseEntry();
- dbValue.setPartial(true);
-
- for(;;)
- {
- try
- {
- com.sleepycat.db.OperationStatus err = _db.get(tx, dbKey, dbValue, null);
-
- if(err == com.sleepycat.db.OperationStatus.SUCCESS)
- {
- return true;
- }
- else if(err == com.sleepycat.db.OperationStatus.NOTFOUND)
- {
- return false;
- }
- else
- {
- throw new DatabaseException();
- }
- }
- catch(com.sleepycat.db.DeadlockException dx)
- {
- if(_evictor.deadlockWarning())
- {
- _communicator.getLogger().warning("Deadlock in Freeze.ObjectStore.dhHasObject while reading " +
- "Db \"" + _evictor.filename() + "/" + _dbName + "\"");
- }
-
- if(tx != null)
- {
- throw new DeadlockException(_evictor.errorPrefix() + "Db.get: " + dx.getMessage(), transaction, dx);
- }
- //
- // Otherwise try again
- //
- }
- catch(com.sleepycat.db.DatabaseException dx)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "Db.get: " + dx.getMessage(), dx);
- }
- }
- }
-
- void
- save(com.sleepycat.db.DatabaseEntry key, com.sleepycat.db.DatabaseEntry value, byte status,
- com.sleepycat.db.Transaction tx)
- throws com.sleepycat.db.DatabaseException
- {
- assert tx != null;
-
- switch(status)
- {
- case BackgroundSaveEvictorI.created:
- case BackgroundSaveEvictorI.modified:
- {
- com.sleepycat.db.OperationStatus err;
- if(status == BackgroundSaveEvictorI.created)
- {
- err = _db.putNoOverwrite(tx, key, value);
- }
- else
- {
- err = _db.put(tx, key, value);
- }
- if(err != com.sleepycat.db.OperationStatus.SUCCESS)
- {
- throw new DatabaseException();
- }
- break;
- }
- case BackgroundSaveEvictorI.destroyed:
- {
- com.sleepycat.db.OperationStatus err = _db.delete(tx, key);
- if(err != com.sleepycat.db.OperationStatus.SUCCESS)
- {
- throw new DatabaseException();
- }
- break;
- }
- default:
- {
- assert false;
- }
- }
- }
-
- static com.sleepycat.db.DatabaseEntry
- marshalKey(Ice.Identity v, Ice.Communicator communicator, Ice.EncodingVersion encoding)
- {
- IceInternal.BasicStream os =
- new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), encoding, true, false);
- v.__write(os);
- return new com.sleepycat.db.DatabaseEntry(os.prepareWrite().b);
- }
-
- static Ice.Identity
- unmarshalKey(com.sleepycat.db.DatabaseEntry e, Ice.Communicator communicator, Ice.EncodingVersion encoding)
- {
- IceInternal.BasicStream is;
- if(e.getDataNIO() != null)
- {
- is = new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), encoding, e.getDataNIO());
- }
- else
- {
- is = new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), encoding, e.getData());
- }
- Ice.Identity key = new Ice.Identity();
- key.__read(is);
- return key;
- }
-
- static com.sleepycat.db.DatabaseEntry
- marshalValue(ObjectRecord v, Ice.Communicator communicator, Ice.EncodingVersion encoding, boolean keepStats)
- {
- IceInternal.BasicStream os =
- new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), encoding, true, false);
- os.startWriteEncaps();
-
- if(keepStats)
- {
- v.__write(os);
- }
- else
- {
- os.writeObject(v.servant);
- }
- os.writePendingObjects();
- os.endWriteEncaps();
- return new com.sleepycat.db.DatabaseEntry(os.prepareWrite().b);
- }
-
- static ObjectRecord
- unmarshalValue(com.sleepycat.db.DatabaseEntry e, Ice.Communicator communicator, Ice.EncodingVersion encoding,
- boolean keepStats)
- {
- IceInternal.BasicStream is;
- if(e.getDataNIO() != null)
- {
- is = new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), encoding, e.getDataNIO());
- }
- else
- {
- is = new IceInternal.BasicStream(IceInternal.Util.getInstance(communicator), encoding, e.getData());
- }
- is.sliceObjects(false);
- ObjectRecord rec = new ObjectRecord();
- is.startReadEncaps();
- if(keepStats)
- {
- rec.__read(is);
- is.readPendingObjects();
- }
- else
- {
- Ice.ObjectHolder holder = new Ice.ObjectHolder();
- is.readObject(holder);
- is.readPendingObjects();
- rec.servant = holder.value;
- }
- is.endReadEncaps();
- return rec;
- }
-
- final IceUtil.Cache
- cache()
- {
- return _cache;
- }
-
- final com.sleepycat.db.Database
- db()
- {
- return _db;
- }
-
- final Ice.Communicator
- communicator()
- {
- return _communicator;
- }
-
- final Ice.EncodingVersion
- encoding()
- {
- return _encoding;
- }
-
- final boolean
- keepStats()
- {
- return _keepStats;
- }
-
- final EvictorI
- evictor()
- {
- return _evictor;
- }
-
- final String
- facet()
- {
- return _facet;
- }
-
- final String
- dbName()
- {
- return _dbName;
- }
-
- final Ice.Object
- sampleServant()
- {
- return _sampleServant;
- }
-
- //
- // Load a servant from the database; will end up in the cache associated with
- // this ObjectStore. This load is not transactional.
- //
- @Override
- public Object
- load(Object identObj)
- {
- Ice.Identity ident = (Ice.Identity)identObj;
-
- com.sleepycat.db.DatabaseEntry dbKey = marshalKey(ident, _communicator, _encoding);
- com.sleepycat.db.DatabaseEntry dbValue = new com.sleepycat.db.DatabaseEntry();
-
- for(;;)
- {
- try
- {
- com.sleepycat.db.OperationStatus rs = _db.get(null, dbKey, dbValue, null);
-
- if(rs == com.sleepycat.db.OperationStatus.NOTFOUND)
- {
- return null;
- }
- else if (rs != com.sleepycat.db.OperationStatus.SUCCESS)
- {
- assert false;
- throw new DatabaseException();
- }
- break;
- }
- catch(com.sleepycat.db.DeadlockException dx)
- {
- if(_evictor.deadlockWarning())
- {
- _communicator.getLogger().warning("Deadlock in Freeze.ObjectStore.load while reading Db \"" +
- _evictor.filename() + "/" + _dbName + "\"; retrying...");
- }
-
- //
- // Ignored, try again
- //
- }
- catch(com.sleepycat.db.DatabaseException dx)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "Db.get: " + dx.getMessage(), dx);
- }
- }
-
- ObjectRecord rec = unmarshalValue(dbValue, _communicator, _encoding, _keepStats);
- _evictor.initialize(ident, _facet, rec.servant);
-
- Object result = _evictor.createEvictorElement(ident, rec, this);
- return result;
- }
-
- //
- // Load a servant from the database using the given transaction; this servant
- // is NOT cached in the ObjectStore associated cache
- //
- ObjectRecord
- load(Ice.Identity ident, TransactionI transaction)
- {
- if(transaction == null)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "no active transaction");
- }
- com.sleepycat.db.Transaction tx = transaction.dbTxn();
- if(tx == null)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "inactive transaction");
- }
-
- com.sleepycat.db.DatabaseEntry dbKey = marshalKey(ident, _communicator, _encoding);
- com.sleepycat.db.DatabaseEntry dbValue = new com.sleepycat.db.DatabaseEntry();
-
- try
- {
- com.sleepycat.db.OperationStatus rs = _db.get(tx, dbKey, dbValue, null);
-
- if(rs == com.sleepycat.db.OperationStatus.NOTFOUND)
- {
- return null;
- }
- else if(rs != com.sleepycat.db.OperationStatus.SUCCESS)
- {
- assert false;
- throw new DatabaseException();
- }
- }
- catch(com.sleepycat.db.DeadlockException dx)
- {
- if(_evictor.deadlockWarning())
- {
- _communicator.getLogger().warning("Deadlock in Freeze.ObjectStore.load while reading Db \"" +
- _evictor.filename() + "/" + _dbName + "\"");
- }
-
- throw new DeadlockException(_evictor.errorPrefix() + "Db.get: " + dx.getMessage(), transaction, dx);
- }
- catch(com.sleepycat.db.DatabaseException dx)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "Db.get: " + dx.getMessage(), dx);
- }
-
- ObjectRecord rec = unmarshalValue(dbValue, _communicator, _encoding, _keepStats);
- _evictor.initialize(ident, _facet, rec.servant);
- return rec;
- }
-
- void
- update(Ice.Identity ident, ObjectRecord objectRecord, TransactionI transaction)
- {
- if(transaction == null)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "no active transaction");
- }
- com.sleepycat.db.Transaction tx = transaction.dbTxn();
- if(tx == null)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "inactive transaction");
- }
-
- if(_sampleServant != null && !objectRecord.servant.ice_id().equals(_sampleServant.ice_id()))
- {
- String msg = _evictor.errorPrefix() + "Attempting to save a '" + objectRecord.servant.ice_id()
- + "' servant in a database of '" + _sampleServant.ice_id() + "' servants";
-
- throw new DatabaseException(msg);
- }
-
- com.sleepycat.db.DatabaseEntry dbKey = marshalKey(ident, _communicator, _encoding);
- com.sleepycat.db.DatabaseEntry dbValue = marshalValue(objectRecord, _communicator, _encoding, _keepStats);
-
- try
- {
- com.sleepycat.db.OperationStatus err = _db.put(tx, dbKey, dbValue);
- if(err != com.sleepycat.db.OperationStatus.SUCCESS)
- {
- throw new DatabaseException();
- }
- }
- catch(com.sleepycat.db.DeadlockException dx)
- {
- if(_evictor.deadlockWarning())
- {
- _communicator.getLogger().warning("Deadlock in Freeze.ObjectStore.update while updating Db \"" +
- _evictor.filename() + "/" + _dbName + "\"");
- }
-
- throw new DeadlockException(_evictor.errorPrefix() + "Db.put: " + dx.getMessage(), transaction, dx);
- }
- catch(com.sleepycat.db.DatabaseException dx)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "Db.put: " + dx.getMessage(), dx);
- }
- }
-
- boolean
- insert(Ice.Identity ident, ObjectRecord objectRecord, TransactionI transaction)
- {
- com.sleepycat.db.Transaction tx = null;
-
- if(transaction != null)
- {
- tx = transaction.dbTxn();
- if(tx == null)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "invalid transaction");
- }
- }
-
- com.sleepycat.db.DatabaseEntry dbKey = marshalKey(ident, _communicator, _encoding);
- com.sleepycat.db.DatabaseEntry dbValue = marshalValue(objectRecord, _communicator, _encoding, _keepStats);
-
- if(_sampleServant != null && !objectRecord.servant.ice_id().equals(_sampleServant.ice_id()))
- {
- String msg = _evictor.errorPrefix() + "Attempting to save a '" + objectRecord.servant.ice_id() +
- "' servant in a database of '" + _sampleServant.ice_id() + "' servants";
-
- throw new DatabaseException(msg);
- }
-
- for(;;)
- {
- try
- {
- return _db.putNoOverwrite(tx, dbKey, dbValue) == com.sleepycat.db.OperationStatus.SUCCESS;
- }
- catch(com.sleepycat.db.DeadlockException dx)
- {
- if(_evictor.deadlockWarning())
- {
- _communicator.getLogger().warning("Deadlock in Freeze.ObjectStore.update while updating Db \"" +
- _evictor.filename() + "/" + _dbName + "\"");
- }
-
- if(tx != null)
- {
- throw new DeadlockException(_evictor.errorPrefix() + "Db.putNoOverwrite: " + dx.getMessage(),
- transaction, dx);
- }
- //
- // Otherwise retry
- //
- }
- catch(com.sleepycat.db.DatabaseException dx)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "Db.putNoOverwrite: " + dx.getMessage(), dx);
- }
- }
- }
-
- boolean
- remove(Ice.Identity ident, TransactionI transaction)
- {
- com.sleepycat.db.Transaction tx = null;
-
- if(transaction != null)
- {
- tx = transaction.dbTxn();
- if(tx == null)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "invalid transaction");
- }
- }
-
- com.sleepycat.db.DatabaseEntry dbKey = marshalKey(ident, _communicator, _encoding);
-
- for(;;)
- {
- try
- {
- return _db.delete(tx, dbKey) == com.sleepycat.db.OperationStatus.SUCCESS;
- }
- catch(com.sleepycat.db.DeadlockException dx)
- {
- if(_evictor.deadlockWarning())
- {
- _communicator.getLogger().warning("Deadlock in Freeze.ObjectStore.remove while updating Db \"" +
- _evictor.filename() + "/" + _dbName + "\"");
- }
-
- if(tx != null)
- {
- throw new DeadlockException(_evictor.errorPrefix() + "Db.delete: " + dx.getMessage(), transaction,
- dx);
- }
-
- //
- // Otherwise retry
- //
-
- }
- catch(com.sleepycat.db.DatabaseException dx)
- {
- throw new DatabaseException(_evictor.errorPrefix() + "Db.delete: " + dx.getMessage(), dx);
- }
- }
- }
-
- private final IceUtil.Cache _cache;
- private final String _facet;
- private final String _dbName;
- private final EvictorI _evictor;
- private final java.util.List<Index> _indices;
- private final Ice.Communicator _communicator;
- private final Ice.EncodingVersion _encoding;
- private boolean _keepStats;
-
- private com.sleepycat.db.Database _db;
- private Ice.Object _sampleServant;
-}