On Thu, Apr 24, 2008 at 7:08 AM, Matthew Toseland
<toad at amphibian.dyndns.org> wrote:
> I strongly disagree with this patch. Please revert it. It prevents us from
> using multiple nodes with different stores in one VM. Static is to be used
> *sparingly* in Freenet.
It will not prevent different store in each node.
Only the method is static, not the field.
It create a *new* EnvirnmentConfig *for each call*, which will then store
in an instance field in freenet.node.Node.
> On Wednesday 23 April 2008 14:38, j16sdiz at freenetproject.org wrote:
> > Author: j16sdiz
> > Date: 2008-04-23 13:38:44 +0000 (Wed, 23 Apr 2008)
> > New Revision: 19526
> >
> > Modified:
> > trunk/freenet/src/freenet/node/Node.java
> > trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
> > Log:
> > move BDB EnvirnmentConfig to BDBFS
> >
> >
> > Modified: trunk/freenet/src/freenet/node/Node.java
> > ===================================================================
> > --- trunk/freenet/src/freenet/node/Node.java 2008-04-23 13:18:03 UTC (rev
> 19525)
> > +++ trunk/freenet/src/freenet/node/Node.java 2008-04-23 13:38:44 UTC (rev
> 19526)
> > @@ -1326,32 +1326,8 @@
> > if(storeType.equals("bdb-index")) {
> > // Setup datastores
> >
> > - // First, global settings
> > + EnvironmentConfig envConfig =
> BerkeleyDBFreenetStore.getBDBConfig();
> >
> > - // Percentage of the database that must contain usefull data
> > - // decrease to increase performance, increase to save disk
> space
> > - // Let it stay at the default of 50% for best performance.
> > - // We only use it for indexes, so it won't get huge.
> > - //System.setProperty("je.cleaner.minUtilization","90");
> > - // Delete empty log files
> > - System.setProperty("je.cleaner.expunge","true");
> > - EnvironmentConfig envConfig = new EnvironmentConfig();
> > - envConfig.setAllowCreate(true);
> > - envConfig.setTransactional(true);
> > - envConfig.setTxnWriteNoSync(true);
> > - envConfig.setLockTimeout(600*1000*1000); // should be long
> enough even
> for severely overloaded nodes!
> > - // Note that the above is in *MICRO*seconds.
> > - envConfig.setConfigParam("je.log.faultReadSize", "6144");
> > - //
> http://www.oracle.com/technology/products/berkeley-db/faq/je_faq.html#35
> > - envConfig.setConfigParam("je.evictor.lruOnly", "false");
> //Is not a
> mutable config option and must be set before opening of environment.
> > - envConfig.setConfigParam("je.evictor.nodesPerScan", "50");
> //Is not a
> mutable config option and must be set before opening of environment.
> > - // Recommended is 100, but smaller values reduce latency
> cost.
> > -
> > - // Tune latency
> > - envConfig.setConfigParam("je.env.backgroundReadLimit",
> "65536");
> > - envConfig.setConfigParam("je.env.backgroundWriteLimit",
> "65536");
> > - envConfig.setConfigParam("je.env.backgroundSleepInterval",
> "10000" /*
> microseconds */); // 10ms
> > -
> > File dbDir = new File(storeDir,
> "database-"+getDarknetPortNumber());
> > dbDir.mkdirs();
> >
> > @@ -1638,7 +1614,7 @@
> > Logger.normal(this, "Node constructor completed");
> > System.out.println("Node constructor completed");
> > }
> > -
> > +
> > public void start(boolean noSwaps) throws NodeInitException {
> >
> > dispatcher.start(nodeStats); // must be before usm
> >
> > Modified: trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
> > ===================================================================
> > --- trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
> 2008-04-23
> 13:18:03 UTC (rev 19525)
> > +++ trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
> 2008-04-23
> 13:38:44 UTC (rev 19526)
> > @@ -21,6 +21,7 @@
> > import com.sleepycat.je.DatabaseException;
> > import com.sleepycat.je.DatabaseNotFoundException;
> > import com.sleepycat.je.Environment;
> > +import com.sleepycat.je.EnvironmentConfig;
> > import com.sleepycat.je.LockMode;
> > import com.sleepycat.je.OperationStatus;
> > import com.sleepycat.je.RunRecoveryException;
> > @@ -2151,4 +2152,36 @@
> > if (lruRAF != null)
> > lruRAF.getFD().sync();
> > }
> > +
> > + /**
> > + * @return
> > + */
> > + public static EnvironmentConfig getBDBConfig() {
> > + // First, global settings
> > +
> > + // Percentage of the database that must contain usefull data
> > + // decrease to increase performance, increase to save disk space
> > + // Let it stay at the default of 50% for best performance.
> > + // We only use it for indexes, so it won't get huge.
> > + //System.setProperty("je.cleaner.minUtilization","90");
> > + // Delete empty log files
> > + System.setProperty("je.cleaner.expunge","true");
> > + EnvironmentConfig envConfig = new EnvironmentConfig();
> > + envConfig.setAllowCreate(true);
> > + envConfig.setTransactional(true);
> > + envConfig.setTxnWriteNoSync(true);
> > + envConfig.setLockTimeout(600*1000*1000); // should be long enough
> even
> for severely overloaded nodes!
> > + // Note that the above is in *MICRO*seconds.
> > + envConfig.setConfigParam("je.log.faultReadSize", "6144");
> > + //
> http://www.oracle.com/technology/products/berkeley-db/faq/je_faq.html#35
> > + envConfig.setConfigParam("je.evictor.lruOnly", "false"); //Is not a
> mutable config option and must be set before opening of environment.
> > + envConfig.setConfigParam("je.evictor.nodesPerScan", "50"); //Is not
> a
> mutable config option and must be set before opening of environment.
> > + // Recommended is 100, but smaller values reduce latency cost.
> > +
> > + // Tune latency
> > + envConfig.setConfigParam("je.env.backgroundReadLimit", "65536");
> > + envConfig.setConfigParam("je.env.backgroundWriteLimit", "65536");
> > + envConfig.setConfigParam("je.env.backgroundSleepInterval", "10000" /*
> microseconds */); // 10ms
> > + return envConfig;
> > + }
> > }
> >
> > _______________________________________________
> > cvs mailing list
> > cvs at freenetproject.org
> > http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
> >
> >
>
> _______________________________________________
> Devl mailing list
> Devl at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl
>