001/*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License").  You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
010 * or http://forgerock.org/license/CDDLv1.0.html.
011 * See the License for the specific language governing permissions
012 * and limitations under the License.
013 *
014 * When distributing Covered Code, include this CDDL HEADER in each
015 * file and include the License file at legal-notices/CDDLv1_0.txt.
016 * If applicable, add the following below this CDDL HEADER, with the
017 * fields enclosed by brackets "[]" replaced with your own identifying
018 * information:
019 *      Portions Copyright [yyyy] [name of copyright owner]
020 *
021 * CDDL HEADER END
022 *
023 *
024 *      Copyright 2008 Sun Microsystems, Inc.
025 */
026package org.opends.server.admin.std.client;
027
028
029
030import java.util.Collection;
031import java.util.SortedSet;
032import org.opends.server.admin.ManagedObjectDefinition;
033import org.opends.server.admin.PropertyException;
034import org.opends.server.admin.std.server.JEBackendCfg;
035
036
037
038/**
039 * A client-side interface for reading and modifying JE Backend
040 * settings.
041 * <p>
042 * A JE Backend stores application data in a Berkeley DB Java Edition
043 * database.
044 */
045public interface JEBackendCfgClient extends PluggableBackendCfgClient {
046
047  /**
048   * Get the configuration definition associated with this JE Backend.
049   *
050   * @return Returns the configuration definition associated with this JE Backend.
051   */
052  ManagedObjectDefinition<? extends JEBackendCfgClient, ? extends JEBackendCfg> definition();
053
054
055
056  /**
057   * Gets the "db-cache-percent" property.
058   * <p>
059   * Specifies the percentage of JVM memory to allocate to the
060   * database cache.
061   * <p>
062   * Specifies the percentage of memory available to the JVM that
063   * should be used for caching database contents. Note that this is
064   * only used if the value of the db-cache-size property is set to "0
065   * MB". Otherwise, the value of that property is used instead to
066   * control the cache size configuration.
067   *
068   * @return Returns the value of the "db-cache-percent" property.
069   */
070  int getDBCachePercent();
071
072
073
074  /**
075   * Sets the "db-cache-percent" property.
076   * <p>
077   * Specifies the percentage of JVM memory to allocate to the
078   * database cache.
079   * <p>
080   * Specifies the percentage of memory available to the JVM that
081   * should be used for caching database contents. Note that this is
082   * only used if the value of the db-cache-size property is set to "0
083   * MB". Otherwise, the value of that property is used instead to
084   * control the cache size configuration.
085   *
086   * @param value The value of the "db-cache-percent" property.
087   * @throws PropertyException
088   *           If the new value is invalid.
089   */
090  void setDBCachePercent(Integer value) throws PropertyException;
091
092
093
094  /**
095   * Gets the "db-cache-size" property.
096   * <p>
097   * The amount of JVM memory to allocate to the database cache.
098   * <p>
099   * Specifies the amount of memory that should be used for caching
100   * database contents. A value of "0 MB" indicates that the
101   * db-cache-percent property should be used instead to specify the
102   * cache size.
103   *
104   * @return Returns the value of the "db-cache-size" property.
105   */
106  long getDBCacheSize();
107
108
109
110  /**
111   * Sets the "db-cache-size" property.
112   * <p>
113   * The amount of JVM memory to allocate to the database cache.
114   * <p>
115   * Specifies the amount of memory that should be used for caching
116   * database contents. A value of "0 MB" indicates that the
117   * db-cache-percent property should be used instead to specify the
118   * cache size.
119   *
120   * @param value The value of the "db-cache-size" property.
121   * @throws PropertyException
122   *           If the new value is invalid.
123   */
124  void setDBCacheSize(Long value) throws PropertyException;
125
126
127
128  /**
129   * Gets the "db-checkpointer-bytes-interval" property.
130   * <p>
131   * Specifies the maximum number of bytes that may be written to the
132   * database before it is forced to perform a checkpoint.
133   * <p>
134   * This can be used to bound the recovery time that may be required
135   * if the database environment is opened without having been properly
136   * closed. If this property is set to a non-zero value, the
137   * checkpointer wakeup interval is not used. To use time-based
138   * checkpointing, set this property to zero.
139   *
140   * @return Returns the value of the "db-checkpointer-bytes-interval" property.
141   */
142  long getDBCheckpointerBytesInterval();
143
144
145
146  /**
147   * Sets the "db-checkpointer-bytes-interval" property.
148   * <p>
149   * Specifies the maximum number of bytes that may be written to the
150   * database before it is forced to perform a checkpoint.
151   * <p>
152   * This can be used to bound the recovery time that may be required
153   * if the database environment is opened without having been properly
154   * closed. If this property is set to a non-zero value, the
155   * checkpointer wakeup interval is not used. To use time-based
156   * checkpointing, set this property to zero.
157   *
158   * @param value The value of the "db-checkpointer-bytes-interval" property.
159   * @throws PropertyException
160   *           If the new value is invalid.
161   */
162  void setDBCheckpointerBytesInterval(Long value) throws PropertyException;
163
164
165
166  /**
167   * Gets the "db-checkpointer-wakeup-interval" property.
168   * <p>
169   * Specifies the maximum length of time that may pass between
170   * checkpoints.
171   * <p>
172   * Note that this is only used if the value of the checkpointer
173   * bytes interval is zero.
174   *
175   * @return Returns the value of the "db-checkpointer-wakeup-interval" property.
176   */
177  long getDBCheckpointerWakeupInterval();
178
179
180
181  /**
182   * Sets the "db-checkpointer-wakeup-interval" property.
183   * <p>
184   * Specifies the maximum length of time that may pass between
185   * checkpoints.
186   * <p>
187   * Note that this is only used if the value of the checkpointer
188   * bytes interval is zero.
189   *
190   * @param value The value of the "db-checkpointer-wakeup-interval" property.
191   * @throws PropertyException
192   *           If the new value is invalid.
193   */
194  void setDBCheckpointerWakeupInterval(Long value) throws PropertyException;
195
196
197
198  /**
199   * Gets the "db-cleaner-min-utilization" property.
200   * <p>
201   * Specifies the occupancy percentage for "live" data in this
202   * backend's database.
203   * <p>
204   * When the amount of "live" data in the database drops below this
205   * value, cleaners will act to increase the occupancy percentage by
206   * compacting the database.
207   *
208   * @return Returns the value of the "db-cleaner-min-utilization" property.
209   */
210  int getDBCleanerMinUtilization();
211
212
213
214  /**
215   * Sets the "db-cleaner-min-utilization" property.
216   * <p>
217   * Specifies the occupancy percentage for "live" data in this
218   * backend's database.
219   * <p>
220   * When the amount of "live" data in the database drops below this
221   * value, cleaners will act to increase the occupancy percentage by
222   * compacting the database.
223   *
224   * @param value The value of the "db-cleaner-min-utilization" property.
225   * @throws PropertyException
226   *           If the new value is invalid.
227   */
228  void setDBCleanerMinUtilization(Integer value) throws PropertyException;
229
230
231
232  /**
233   * Gets the "db-directory" property.
234   * <p>
235   * Specifies the path to the filesystem directory that is used to
236   * hold the Berkeley DB Java Edition database files containing the
237   * data for this backend.
238   * <p>
239   * The path may be either an absolute path or a path relative to the
240   * directory containing the base of the OpenDJ directory server
241   * installation. The path may be any valid directory path in which
242   * the server has appropriate permissions to read and write files and
243   * has sufficient space to hold the database contents.
244   *
245   * @return Returns the value of the "db-directory" property.
246   */
247  String getDBDirectory();
248
249
250
251  /**
252   * Sets the "db-directory" property.
253   * <p>
254   * Specifies the path to the filesystem directory that is used to
255   * hold the Berkeley DB Java Edition database files containing the
256   * data for this backend.
257   * <p>
258   * The path may be either an absolute path or a path relative to the
259   * directory containing the base of the OpenDJ directory server
260   * installation. The path may be any valid directory path in which
261   * the server has appropriate permissions to read and write files and
262   * has sufficient space to hold the database contents.
263   *
264   * @param value The value of the "db-directory" property.
265   * @throws PropertyException
266   *           If the new value is invalid.
267   */
268  void setDBDirectory(String value) throws PropertyException;
269
270
271
272  /**
273   * Gets the "db-directory-permissions" property.
274   * <p>
275   * Specifies the permissions that should be applied to the directory
276   * containing the server database files.
277   * <p>
278   * They should be expressed as three-digit octal values, which is
279   * the traditional representation for UNIX file permissions. The
280   * three digits represent the permissions that are available for the
281   * directory's owner, group members, and other users (in that order),
282   * and each digit is the octal representation of the read, write, and
283   * execute bits. Note that this only impacts permissions on the
284   * database directory and not on the files written into that
285   * directory. On UNIX systems, the user's umask controls permissions
286   * given to the database files.
287   *
288   * @return Returns the value of the "db-directory-permissions" property.
289   */
290  String getDBDirectoryPermissions();
291
292
293
294  /**
295   * Sets the "db-directory-permissions" property.
296   * <p>
297   * Specifies the permissions that should be applied to the directory
298   * containing the server database files.
299   * <p>
300   * They should be expressed as three-digit octal values, which is
301   * the traditional representation for UNIX file permissions. The
302   * three digits represent the permissions that are available for the
303   * directory's owner, group members, and other users (in that order),
304   * and each digit is the octal representation of the read, write, and
305   * execute bits. Note that this only impacts permissions on the
306   * database directory and not on the files written into that
307   * directory. On UNIX systems, the user's umask controls permissions
308   * given to the database files.
309   *
310   * @param value The value of the "db-directory-permissions" property.
311   * @throws PropertyException
312   *           If the new value is invalid.
313   */
314  void setDBDirectoryPermissions(String value) throws PropertyException;
315
316
317
318  /**
319   * Gets the "db-evictor-core-threads" property.
320   * <p>
321   * Specifies the core number of threads in the eviction thread pool.
322   * <p>
323   * Specifies the core number of threads in the eviction thread pool.
324   * These threads help keep memory usage within cache bounds,
325   * offloading work from application threads. db-evictor-core-threads,
326   * db-evictor-max-threads and db-evictor-keep-alive are used to
327   * configure the core, max and keepalive attributes for the eviction
328   * thread pool.
329   *
330   * @return Returns the value of the "db-evictor-core-threads" property.
331   */
332  int getDBEvictorCoreThreads();
333
334
335
336  /**
337   * Sets the "db-evictor-core-threads" property.
338   * <p>
339   * Specifies the core number of threads in the eviction thread pool.
340   * <p>
341   * Specifies the core number of threads in the eviction thread pool.
342   * These threads help keep memory usage within cache bounds,
343   * offloading work from application threads. db-evictor-core-threads,
344   * db-evictor-max-threads and db-evictor-keep-alive are used to
345   * configure the core, max and keepalive attributes for the eviction
346   * thread pool.
347   *
348   * @param value The value of the "db-evictor-core-threads" property.
349   * @throws PropertyException
350   *           If the new value is invalid.
351   */
352  void setDBEvictorCoreThreads(Integer value) throws PropertyException;
353
354
355
356  /**
357   * Gets the "db-evictor-keep-alive" property.
358   * <p>
359   * The duration that excess threads in the eviction thread pool will
360   * stay idle. After this period, idle threads will terminate.
361   * <p>
362   * The duration that excess threads in the eviction thread pool will
363   * stay idle. After this period, idle threads will terminate.
364   * db-evictor-core-threads, db-evictor-max-threads and
365   * db-evictor-keep-alive are used to configure the core, max and
366   * keepalive attributes for the eviction thread pool.
367   *
368   * @return Returns the value of the "db-evictor-keep-alive" property.
369   */
370  long getDBEvictorKeepAlive();
371
372
373
374  /**
375   * Sets the "db-evictor-keep-alive" property.
376   * <p>
377   * The duration that excess threads in the eviction thread pool will
378   * stay idle. After this period, idle threads will terminate.
379   * <p>
380   * The duration that excess threads in the eviction thread pool will
381   * stay idle. After this period, idle threads will terminate.
382   * db-evictor-core-threads, db-evictor-max-threads and
383   * db-evictor-keep-alive are used to configure the core, max and
384   * keepalive attributes for the eviction thread pool.
385   *
386   * @param value The value of the "db-evictor-keep-alive" property.
387   * @throws PropertyException
388   *           If the new value is invalid.
389   */
390  void setDBEvictorKeepAlive(Long value) throws PropertyException;
391
392
393
394  /**
395   * Gets the "db-evictor-lru-only" property.
396   * <p>
397   * Indicates whether the database should evict existing data from
398   * the cache based on an LRU policy (where the least recently used
399   * information will be evicted first).
400   * <p>
401   * If set to "false", then the eviction keeps internal nodes of the
402   * underlying Btree in the cache over leaf nodes, even if the leaf
403   * nodes have been accessed more recently. This may be a better
404   * configuration for databases in which only a very small portion of
405   * the data is cached.
406   *
407   * @return Returns the value of the "db-evictor-lru-only" property.
408   */
409  boolean isDBEvictorLruOnly();
410
411
412
413  /**
414   * Sets the "db-evictor-lru-only" property.
415   * <p>
416   * Indicates whether the database should evict existing data from
417   * the cache based on an LRU policy (where the least recently used
418   * information will be evicted first).
419   * <p>
420   * If set to "false", then the eviction keeps internal nodes of the
421   * underlying Btree in the cache over leaf nodes, even if the leaf
422   * nodes have been accessed more recently. This may be a better
423   * configuration for databases in which only a very small portion of
424   * the data is cached.
425   *
426   * @param value The value of the "db-evictor-lru-only" property.
427   * @throws PropertyException
428   *           If the new value is invalid.
429   */
430  void setDBEvictorLruOnly(Boolean value) throws PropertyException;
431
432
433
434  /**
435   * Gets the "db-evictor-max-threads" property.
436   * <p>
437   * Specifies the maximum number of threads in the eviction thread
438   * pool.
439   * <p>
440   * Specifies the maximum number of threads in the eviction thread
441   * pool. These threads help keep memory usage within cache bounds,
442   * offloading work from application threads. db-evictor-core-threads,
443   * db-evictor-max-threads and db-evictor-keep-alive are used to
444   * configure the core, max and keepalive attributes for the eviction
445   * thread pool.
446   *
447   * @return Returns the value of the "db-evictor-max-threads" property.
448   */
449  int getDBEvictorMaxThreads();
450
451
452
453  /**
454   * Sets the "db-evictor-max-threads" property.
455   * <p>
456   * Specifies the maximum number of threads in the eviction thread
457   * pool.
458   * <p>
459   * Specifies the maximum number of threads in the eviction thread
460   * pool. These threads help keep memory usage within cache bounds,
461   * offloading work from application threads. db-evictor-core-threads,
462   * db-evictor-max-threads and db-evictor-keep-alive are used to
463   * configure the core, max and keepalive attributes for the eviction
464   * thread pool.
465   *
466   * @param value The value of the "db-evictor-max-threads" property.
467   * @throws PropertyException
468   *           If the new value is invalid.
469   */
470  void setDBEvictorMaxThreads(Integer value) throws PropertyException;
471
472
473
474  /**
475   * Gets the "db-evictor-nodes-per-scan" property.
476   * <p>
477   * Specifies the number of Btree nodes that should be evicted from
478   * the cache in a single pass if it is determined that it is
479   * necessary to free existing data in order to make room for new
480   * information.
481   * <p>
482   * Changes to this property do not take effect until the backend is
483   * restarted. It is recommended that you also change this property
484   * when you set db-evictor-lru-only to false. This setting controls
485   * the number of Btree nodes that are considered, or sampled, each
486   * time a node is evicted. A setting of 10 often produces good
487   * results, but this may vary from application to application. The
488   * larger the nodes per scan, the more accurate the algorithm.
489   * However, don't set it too high. When considering larger numbers of
490   * nodes for each eviction, the evictor may delay the completion of a
491   * given database operation, which impacts the response time of the
492   * application thread. In JE 4.1 and later, setting this value too
493   * high in an application that is largely CPU bound can reduce the
494   * effectiveness of cache eviction. It's best to start with the
495   * default value, and increase it gradually to see if it is
496   * beneficial for your application.
497   *
498   * @return Returns the value of the "db-evictor-nodes-per-scan" property.
499   */
500  int getDBEvictorNodesPerScan();
501
502
503
504  /**
505   * Sets the "db-evictor-nodes-per-scan" property.
506   * <p>
507   * Specifies the number of Btree nodes that should be evicted from
508   * the cache in a single pass if it is determined that it is
509   * necessary to free existing data in order to make room for new
510   * information.
511   * <p>
512   * Changes to this property do not take effect until the backend is
513   * restarted. It is recommended that you also change this property
514   * when you set db-evictor-lru-only to false. This setting controls
515   * the number of Btree nodes that are considered, or sampled, each
516   * time a node is evicted. A setting of 10 often produces good
517   * results, but this may vary from application to application. The
518   * larger the nodes per scan, the more accurate the algorithm.
519   * However, don't set it too high. When considering larger numbers of
520   * nodes for each eviction, the evictor may delay the completion of a
521   * given database operation, which impacts the response time of the
522   * application thread. In JE 4.1 and later, setting this value too
523   * high in an application that is largely CPU bound can reduce the
524   * effectiveness of cache eviction. It's best to start with the
525   * default value, and increase it gradually to see if it is
526   * beneficial for your application.
527   *
528   * @param value The value of the "db-evictor-nodes-per-scan" property.
529   * @throws PropertyException
530   *           If the new value is invalid.
531   */
532  void setDBEvictorNodesPerScan(Integer value) throws PropertyException;
533
534
535
536  /**
537   * Gets the "db-log-filecache-size" property.
538   * <p>
539   * Specifies the size of the file handle cache.
540   * <p>
541   * The file handle cache is used to keep as much opened log files as
542   * possible. When the cache is smaller than the number of logs, the
543   * database needs to close some handles and open log files it needs,
544   * resulting in less optimal performances. Ideally, the size of the
545   * cache should be higher than the number of files contained in the
546   * database. Make sure the OS number of open files per process is
547   * also tuned appropriately.
548   *
549   * @return Returns the value of the "db-log-filecache-size" property.
550   */
551  int getDBLogFilecacheSize();
552
553
554
555  /**
556   * Sets the "db-log-filecache-size" property.
557   * <p>
558   * Specifies the size of the file handle cache.
559   * <p>
560   * The file handle cache is used to keep as much opened log files as
561   * possible. When the cache is smaller than the number of logs, the
562   * database needs to close some handles and open log files it needs,
563   * resulting in less optimal performances. Ideally, the size of the
564   * cache should be higher than the number of files contained in the
565   * database. Make sure the OS number of open files per process is
566   * also tuned appropriately.
567   *
568   * @param value The value of the "db-log-filecache-size" property.
569   * @throws PropertyException
570   *           If the new value is invalid.
571   */
572  void setDBLogFilecacheSize(Integer value) throws PropertyException;
573
574
575
576  /**
577   * Gets the "db-log-file-max" property.
578   * <p>
579   * Specifies the maximum size for a database log file.
580   *
581   * @return Returns the value of the "db-log-file-max" property.
582   */
583  long getDBLogFileMax();
584
585
586
587  /**
588   * Sets the "db-log-file-max" property.
589   * <p>
590   * Specifies the maximum size for a database log file.
591   *
592   * @param value The value of the "db-log-file-max" property.
593   * @throws PropertyException
594   *           If the new value is invalid.
595   */
596  void setDBLogFileMax(Long value) throws PropertyException;
597
598
599
600  /**
601   * Gets the "db-logging-file-handler-on" property.
602   * <p>
603   * Indicates whether the database should maintain a je.info file in
604   * the same directory as the database log directory.
605   * <p>
606   * This file contains information about the internal processing
607   * performed by the underlying database.
608   *
609   * @return Returns the value of the "db-logging-file-handler-on" property.
610   */
611  boolean isDBLoggingFileHandlerOn();
612
613
614
615  /**
616   * Sets the "db-logging-file-handler-on" property.
617   * <p>
618   * Indicates whether the database should maintain a je.info file in
619   * the same directory as the database log directory.
620   * <p>
621   * This file contains information about the internal processing
622   * performed by the underlying database.
623   *
624   * @param value The value of the "db-logging-file-handler-on" property.
625   * @throws PropertyException
626   *           If the new value is invalid.
627   */
628  void setDBLoggingFileHandlerOn(Boolean value) throws PropertyException;
629
630
631
632  /**
633   * Gets the "db-logging-level" property.
634   * <p>
635   * Specifies the log level that should be used by the database when
636   * it is writing information into the je.info file.
637   * <p>
638   * The database trace logging level is (in increasing order of
639   * verbosity) chosen from: OFF, SEVERE, WARNING, INFO, CONFIG, FINE,
640   * FINER, FINEST, ALL.
641   *
642   * @return Returns the value of the "db-logging-level" property.
643   */
644  String getDBLoggingLevel();
645
646
647
648  /**
649   * Sets the "db-logging-level" property.
650   * <p>
651   * Specifies the log level that should be used by the database when
652   * it is writing information into the je.info file.
653   * <p>
654   * The database trace logging level is (in increasing order of
655   * verbosity) chosen from: OFF, SEVERE, WARNING, INFO, CONFIG, FINE,
656   * FINER, FINEST, ALL.
657   *
658   * @param value The value of the "db-logging-level" property.
659   * @throws PropertyException
660   *           If the new value is invalid.
661   */
662  void setDBLoggingLevel(String value) throws PropertyException;
663
664
665
666  /**
667   * Gets the "db-num-cleaner-threads" property.
668   * <p>
669   * Specifies the number of threads that the backend should maintain
670   * to keep the database log files at or near the desired utilization.
671   * <p>
672   * In environments with high write throughput, multiple cleaner
673   * threads may be required to maintain the desired utilization.
674   *
675   * @return Returns the value of the "db-num-cleaner-threads" property.
676   */
677  Integer getDBNumCleanerThreads();
678
679
680
681  /**
682   * Sets the "db-num-cleaner-threads" property.
683   * <p>
684   * Specifies the number of threads that the backend should maintain
685   * to keep the database log files at or near the desired utilization.
686   * <p>
687   * In environments with high write throughput, multiple cleaner
688   * threads may be required to maintain the desired utilization.
689   *
690   * @param value The value of the "db-num-cleaner-threads" property.
691   * @throws PropertyException
692   *           If the new value is invalid.
693   */
694  void setDBNumCleanerThreads(Integer value) throws PropertyException;
695
696
697
698  /**
699   * Gets the "db-num-lock-tables" property.
700   * <p>
701   * Specifies the number of lock tables that are used by the
702   * underlying database.
703   * <p>
704   * This can be particularly important to help improve scalability by
705   * avoiding contention on systems with large numbers of CPUs. The
706   * value of this configuration property should be set to a prime
707   * number that is less than or equal to the number of worker threads
708   * configured for use in the server.
709   *
710   * @return Returns the value of the "db-num-lock-tables" property.
711   */
712  Integer getDBNumLockTables();
713
714
715
716  /**
717   * Sets the "db-num-lock-tables" property.
718   * <p>
719   * Specifies the number of lock tables that are used by the
720   * underlying database.
721   * <p>
722   * This can be particularly important to help improve scalability by
723   * avoiding contention on systems with large numbers of CPUs. The
724   * value of this configuration property should be set to a prime
725   * number that is less than or equal to the number of worker threads
726   * configured for use in the server.
727   *
728   * @param value The value of the "db-num-lock-tables" property.
729   * @throws PropertyException
730   *           If the new value is invalid.
731   */
732  void setDBNumLockTables(Integer value) throws PropertyException;
733
734
735
736  /**
737   * Gets the "db-run-cleaner" property.
738   * <p>
739   * Indicates whether the cleaner threads should be enabled to
740   * compact the database.
741   * <p>
742   * The cleaner threads are used to periodically compact the database
743   * when it reaches a percentage of occupancy lower than the amount
744   * specified by the db-cleaner-min-utilization property. They
745   * identify database files with a low percentage of live data, and
746   * relocate their remaining live data to the end of the log.
747   *
748   * @return Returns the value of the "db-run-cleaner" property.
749   */
750  boolean isDBRunCleaner();
751
752
753
754  /**
755   * Sets the "db-run-cleaner" property.
756   * <p>
757   * Indicates whether the cleaner threads should be enabled to
758   * compact the database.
759   * <p>
760   * The cleaner threads are used to periodically compact the database
761   * when it reaches a percentage of occupancy lower than the amount
762   * specified by the db-cleaner-min-utilization property. They
763   * identify database files with a low percentage of live data, and
764   * relocate their remaining live data to the end of the log.
765   *
766   * @param value The value of the "db-run-cleaner" property.
767   * @throws PropertyException
768   *           If the new value is invalid.
769   */
770  void setDBRunCleaner(Boolean value) throws PropertyException;
771
772
773
774  /**
775   * Gets the "db-txn-no-sync" property.
776   * <p>
777   * Indicates whether database writes should be primarily written to
778   * an internal buffer but not immediately written to disk.
779   * <p>
780   * Setting the value of this configuration attribute to "true" may
781   * improve write performance but could cause the most recent changes
782   * to be lost if the OpenDJ directory server or the underlying JVM
783   * exits abnormally, or if an OS or hardware failure occurs (a
784   * behavior similar to running with transaction durability disabled
785   * in the Sun Java System Directory Server).
786   *
787   * @return Returns the value of the "db-txn-no-sync" property.
788   */
789  boolean isDBTxnNoSync();
790
791
792
793  /**
794   * Sets the "db-txn-no-sync" property.
795   * <p>
796   * Indicates whether database writes should be primarily written to
797   * an internal buffer but not immediately written to disk.
798   * <p>
799   * Setting the value of this configuration attribute to "true" may
800   * improve write performance but could cause the most recent changes
801   * to be lost if the OpenDJ directory server or the underlying JVM
802   * exits abnormally, or if an OS or hardware failure occurs (a
803   * behavior similar to running with transaction durability disabled
804   * in the Sun Java System Directory Server).
805   *
806   * @param value The value of the "db-txn-no-sync" property.
807   * @throws PropertyException
808   *           If the new value is invalid.
809   */
810  void setDBTxnNoSync(Boolean value) throws PropertyException;
811
812
813
814  /**
815   * Gets the "db-txn-write-no-sync" property.
816   * <p>
817   * Indicates whether the database should synchronously flush data as
818   * it is written to disk.
819   * <p>
820   * If this value is set to "false", then all data written to disk is
821   * synchronously flushed to persistent storage and thereby providing
822   * full durability. If it is set to "true", then data may be cached
823   * for a period of time by the underlying operating system before
824   * actually being written to disk. This may improve performance, but
825   * could cause the most recent changes to be lost in the event of an
826   * underlying OS or hardware failure (but not in the case that the
827   * OpenDJ directory server or the JVM exits abnormally).
828   *
829   * @return Returns the value of the "db-txn-write-no-sync" property.
830   */
831  boolean isDBTxnWriteNoSync();
832
833
834
835  /**
836   * Sets the "db-txn-write-no-sync" property.
837   * <p>
838   * Indicates whether the database should synchronously flush data as
839   * it is written to disk.
840   * <p>
841   * If this value is set to "false", then all data written to disk is
842   * synchronously flushed to persistent storage and thereby providing
843   * full durability. If it is set to "true", then data may be cached
844   * for a period of time by the underlying operating system before
845   * actually being written to disk. This may improve performance, but
846   * could cause the most recent changes to be lost in the event of an
847   * underlying OS or hardware failure (but not in the case that the
848   * OpenDJ directory server or the JVM exits abnormally).
849   *
850   * @param value The value of the "db-txn-write-no-sync" property.
851   * @throws PropertyException
852   *           If the new value is invalid.
853   */
854  void setDBTxnWriteNoSync(Boolean value) throws PropertyException;
855
856
857
858  /**
859   * Gets the "disk-full-threshold" property.
860   * <p>
861   * Full disk threshold to limit database updates
862   * <p>
863   * When the available free space on the disk used by this database
864   * instance falls below the value specified, no updates are permitted
865   * and the server returns an UNWILLING_TO_PERFORM error. Updates are
866   * allowed again as soon as free space rises above the threshold.
867   *
868   * @return Returns the value of the "disk-full-threshold" property.
869   */
870  long getDiskFullThreshold();
871
872
873
874  /**
875   * Sets the "disk-full-threshold" property.
876   * <p>
877   * Full disk threshold to limit database updates
878   * <p>
879   * When the available free space on the disk used by this database
880   * instance falls below the value specified, no updates are permitted
881   * and the server returns an UNWILLING_TO_PERFORM error. Updates are
882   * allowed again as soon as free space rises above the threshold.
883   *
884   * @param value The value of the "disk-full-threshold" property.
885   * @throws PropertyException
886   *           If the new value is invalid.
887   */
888  void setDiskFullThreshold(Long value) throws PropertyException;
889
890
891
892  /**
893   * Gets the "disk-low-threshold" property.
894   * <p>
895   * Low disk threshold to limit database updates
896   * <p>
897   * Specifies the "low" free space on the disk. When the available
898   * free space on the disk used by this database instance falls below
899   * the value specified, protocol updates on this database are
900   * permitted only by a user with the BYPASS_LOCKDOWN privilege.
901   *
902   * @return Returns the value of the "disk-low-threshold" property.
903   */
904  long getDiskLowThreshold();
905
906
907
908  /**
909   * Sets the "disk-low-threshold" property.
910   * <p>
911   * Low disk threshold to limit database updates
912   * <p>
913   * Specifies the "low" free space on the disk. When the available
914   * free space on the disk used by this database instance falls below
915   * the value specified, protocol updates on this database are
916   * permitted only by a user with the BYPASS_LOCKDOWN privilege.
917   *
918   * @param value The value of the "disk-low-threshold" property.
919   * @throws PropertyException
920   *           If the new value is invalid.
921   */
922  void setDiskLowThreshold(Long value) throws PropertyException;
923
924
925
926  /**
927   * Gets the "java-class" property.
928   * <p>
929   * Specifies the fully-qualified name of the Java class that
930   * provides the backend implementation.
931   *
932   * @return Returns the value of the "java-class" property.
933   */
934  String getJavaClass();
935
936
937
938  /**
939   * Sets the "java-class" property.
940   * <p>
941   * Specifies the fully-qualified name of the Java class that
942   * provides the backend implementation.
943   *
944   * @param value The value of the "java-class" property.
945   * @throws PropertyException
946   *           If the new value is invalid.
947   */
948  void setJavaClass(String value) throws PropertyException;
949
950
951
952  /**
953   * Gets the "je-property" property.
954   * <p>
955   * Specifies the database and environment properties for the
956   * Berkeley DB Java Edition database serving the data for this
957   * backend.
958   * <p>
959   * Any Berkeley DB Java Edition property can be specified using the
960   * following form: property-name=property-value. Refer to OpenDJ
961   * documentation for further information on related properties, their
962   * implications, and range values. The definitive identification of
963   * all the property parameters is available in the example.properties
964   * file of Berkeley DB Java Edition distribution.
965   *
966   * @return Returns the values of the "je-property" property.
967   */
968  SortedSet<String> getJEProperty();
969
970
971
972  /**
973   * Sets the "je-property" property.
974   * <p>
975   * Specifies the database and environment properties for the
976   * Berkeley DB Java Edition database serving the data for this
977   * backend.
978   * <p>
979   * Any Berkeley DB Java Edition property can be specified using the
980   * following form: property-name=property-value. Refer to OpenDJ
981   * documentation for further information on related properties, their
982   * implications, and range values. The definitive identification of
983   * all the property parameters is available in the example.properties
984   * file of Berkeley DB Java Edition distribution.
985   *
986   * @param values The values of the "je-property" property.
987   * @throws PropertyException
988   *           If one or more of the new values are invalid.
989   */
990  void setJEProperty(Collection<String> values) throws PropertyException;
991
992}