You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2010/12/31 02:21:13 UTC
svn commit: r1054037 -
/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/ConfigStore.scala
Author: chirino
Date: Fri Dec 31 01:21:13 2010
New Revision: 1054037
URL: http://svn.apache.org/viewvc?rev=1054037&view=rev
Log:
FileConfigStore can now be used without having to start/stop it. And it uses the broker blocking pool when it is started.
Modified:
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/ConfigStore.scala
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/ConfigStore.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/ConfigStore.scala?rev=1054037&r1=1054036&r2=1054037&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/ConfigStore.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/ConfigStore.scala Fri Dec 31 01:21:13 2010
@@ -18,7 +18,6 @@ package org.apache.activemq.apollo.broke
import org.apache.activemq.apollo.dto.{XmlCodec, BrokerDTO}
import org.fusesource.hawtdispatch._
-import java.util.concurrent.{TimeUnit, ExecutorService, Executors}
import org.fusesource.hawtbuf.{ByteArrayInputStream, ByteArrayOutputStream}
import security.EncryptionSupport
import XmlCodec._
@@ -27,6 +26,7 @@ import java.util.Arrays
import FileSupport._
import java.util.Properties
import java.io.{FileOutputStream, FileInputStream, File}
+import java.util.concurrent.{ThreadFactory, TimeUnit, ExecutorService, Executors}
object ConfigStore {
@@ -72,31 +72,23 @@ object FileConfigStore extends Log
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class FileConfigStore extends ConfigStore {
+class FileConfigStore(var file:File = new File("activemq.xml")) extends ConfigStore {
import FileConfigStore._
case class StoredBrokerModel(data:Array[Byte], last_modified:Long)
- var file:File = new File("activemq.xml")
+ file = file.getCanonicalFile
@volatile
var latest:StoredBrokerModel = null
+
@volatile
var running = false
val dispatch_queue = createQueue("config store")
- // can't do blocking IO work on the dispatchQueue :(
- // so... use an executor
- var io_worker:ExecutorService = null
-
-
def start = {
- io_worker = Executors.newSingleThreadExecutor
running = true
-
- file = file.getCanonicalFile;
-
if( !file.exists ) {
try {
// try to create a default version of the file.
@@ -108,22 +100,20 @@ class FileConfigStore extends ConfigStor
throw new Exception("The '%s' configuration file does not exist.".format(file.getPath))
}
}
-
latest = read(file)
schedual_next_update_check
}
def stop = {
running = false
- io_worker.shutdown
}
def load(eval:Boolean) = {
- unmarshall(latest.data, eval)
+ unmarshall(read(file).data, eval)
}
def read() = {
- new String(latest.data)
+ new String(read(file).data)
}
def can_write:Boolean = file.canWrite
@@ -143,7 +133,7 @@ class FileConfigStore extends ConfigStor
if( running ) {
val last_modified = latest.last_modified
val latestData = latest.data
- io_worker {
+ Broker.BLOCKABLE_THREAD_POOL {
try {
val l = file.lastModified
if( l != last_modified ) {