mirror of https://github.com/apache/activemq.git
Provide better error messages when directories cannot be created.
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@661435 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b6dc8eeba7
commit
fd184fb79a
|
@ -448,9 +448,9 @@ public class BrokerService implements Service {
|
|||
BrokerRegistry.getInstance().bind(getBrokerName(), this);
|
||||
|
||||
|
||||
LOG.info("Using Persistence Adapter: " + getPersistenceAdapter());
|
||||
getPersistenceAdapter().setUsageManager(getProducerSystemUsage());
|
||||
getPersistenceAdapter().setBrokerName(getBrokerName());
|
||||
LOG.info("Using Persistence Adapter: " + getPersistenceAdapter());
|
||||
if (deleteAllMessagesOnStartup) {
|
||||
deleteAllMessages();
|
||||
}
|
||||
|
|
|
@ -103,7 +103,7 @@ public class KahaStore implements Store {
|
|||
this.mode = mode;
|
||||
this.storeSize = storeSize;
|
||||
this.directory = directory;
|
||||
this.directory.mkdirs();
|
||||
IOHelper.mkdirs(this.directory);
|
||||
}
|
||||
|
||||
public synchronized void close() throws IOException {
|
||||
|
|
|
@ -40,6 +40,7 @@ import org.apache.activemq.kaha.impl.async.DataFileAppender.WriteCommand;
|
|||
import org.apache.activemq.kaha.impl.async.DataFileAppender.WriteKey;
|
||||
import org.apache.activemq.thread.Scheduler;
|
||||
import org.apache.activemq.util.ByteSequence;
|
||||
import org.apache.activemq.util.IOHelper;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
|
@ -190,15 +191,15 @@ public class AsyncDataManager {
|
|||
Scheduler.executePeriodically(cleanupTask, 1000 * 30);
|
||||
}
|
||||
|
||||
public void lock() throws IOException {
|
||||
synchronized (this) {
|
||||
if( controlFile == null ) {
|
||||
directory.mkdirs();
|
||||
controlFile = new ControlFile(new File(directory, filePrefix + "control"), CONTROL_RECORD_MAX_LENGTH);
|
||||
}
|
||||
public void lock() throws IOException {
|
||||
synchronized (this) {
|
||||
if (controlFile == null) {
|
||||
IOHelper.mkdirs(directory);
|
||||
controlFile = new ControlFile(new File(directory, filePrefix + "control"), CONTROL_RECORD_MAX_LENGTH);
|
||||
}
|
||||
controlFile.lock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected Location recoveryCheck(DataFile dataFile, Location location) throws IOException {
|
||||
if (location == null) {
|
||||
|
|
|
@ -183,7 +183,7 @@ public final class IndexManager {
|
|||
|
||||
protected void initialize() throws IOException {
|
||||
file = new File(directory, NAME_PREFIX + IOHelper.toFileSystemSafeName(name) );
|
||||
file.getParentFile().mkdirs();
|
||||
IOHelper.mkdirs(file.getParentFile());
|
||||
indexFile = new RandomAccessFile(file, mode);
|
||||
reader = new StoreIndexReader(indexFile);
|
||||
writer = new StoreIndexWriter(indexFile, name, redoLog);
|
||||
|
|
|
@ -436,7 +436,7 @@ public class HashIndex implements Index, HashIndexMBean {
|
|||
private void openIndexFile() throws IOException {
|
||||
if (indexFile == null) {
|
||||
file = new File(directory, NAME_PREFIX + IOHelper.toFileSystemSafeName(name));
|
||||
file.getParentFile().mkdirs();
|
||||
IOHelper.mkdirs(file.getParentFile());
|
||||
indexFile = new RandomAccessFile(file, "rw");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -404,7 +404,7 @@ public class TreeIndex implements Index {
|
|||
protected void openIndexFile() throws IOException {
|
||||
if (indexFile == null) {
|
||||
file = new File(directory, NAME_PREFIX + IOHelper.toFileSystemSafeName(name));
|
||||
file.getParentFile().mkdirs();
|
||||
IOHelper.mkdirs(file.getParentFile());
|
||||
indexFile = new RandomAccessFile(file, "rw");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
|
|||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import org.apache.activeio.journal.Journal;
|
||||
import org.apache.activemq.broker.BrokerService;
|
||||
import org.apache.activemq.broker.BrokerServiceAware;
|
||||
|
@ -164,12 +165,12 @@ public class AMQPersistenceAdapter implements PersistenceAdapter, UsageListener,
|
|||
if (this.directoryArchive == null) {
|
||||
this.directoryArchive = new File(this.directory,"archive");
|
||||
}
|
||||
this.directory.mkdirs();
|
||||
IOHelper.mkdirs(this.directory);
|
||||
lockFile = new RandomAccessFile(new File(directory, "lock"), "rw");
|
||||
lock();
|
||||
LOG.info("AMQStore starting using directory: " + directory);
|
||||
if (archiveDataLogs) {
|
||||
this.directoryArchive.mkdirs();
|
||||
IOHelper.mkdirs(this.directoryArchive);
|
||||
}
|
||||
|
||||
if (this.usageManager != null) {
|
||||
|
|
|
@ -23,6 +23,7 @@ import java.util.Iterator;
|
|||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import org.apache.activemq.broker.ConnectionContext;
|
||||
import org.apache.activemq.command.ActiveMQDestination;
|
||||
import org.apache.activemq.command.ActiveMQQueue;
|
||||
|
@ -49,8 +50,6 @@ import org.apache.activemq.util.IOHelper;
|
|||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import sun.misc.Perf.GetPerfAction;
|
||||
|
||||
/**
|
||||
* @org.apache.xbean.XBean
|
||||
* @version $Revision: 1.4 $
|
||||
|
@ -328,7 +327,11 @@ public class KahaPersistenceAdapter implements PersistenceAdapter {
|
|||
file = new File(file, IOHelper.toFileSystemSafeName(brokerName) + "-kahastore");
|
||||
setDirectory(file);
|
||||
}
|
||||
this.directory.mkdirs();
|
||||
try {
|
||||
IOHelper.mkdirs(this.directory);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
wireFormat.setCacheEnabled(false);
|
||||
wireFormat.setTightEncodingEnabled(true);
|
||||
}
|
||||
|
|
|
@ -26,10 +26,8 @@ import java.util.Set;
|
|||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
|
||||
import org.apache.activemq.broker.ConnectionContext;
|
||||
import org.apache.activemq.command.ActiveMQDestination;
|
||||
import org.apache.activemq.command.ActiveMQQueue;
|
||||
import org.apache.activemq.command.ActiveMQTopic;
|
||||
import org.apache.activemq.command.MessageId;
|
||||
|
@ -41,7 +39,6 @@ import org.apache.activemq.kaha.MapContainer;
|
|||
import org.apache.activemq.kaha.MessageIdMarshaller;
|
||||
import org.apache.activemq.kaha.Store;
|
||||
import org.apache.activemq.kaha.StoreFactory;
|
||||
import org.apache.activemq.kaha.impl.StoreLockedExcpetion;
|
||||
import org.apache.activemq.kaha.impl.index.hash.HashIndex;
|
||||
import org.apache.activemq.store.MessageStore;
|
||||
import org.apache.activemq.store.ReferenceStore;
|
||||
|
@ -49,6 +46,7 @@ import org.apache.activemq.store.ReferenceStoreAdapter;
|
|||
import org.apache.activemq.store.TopicMessageStore;
|
||||
import org.apache.activemq.store.TopicReferenceStore;
|
||||
import org.apache.activemq.store.amq.AMQTx;
|
||||
import org.apache.activemq.util.IOHelper;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
|
@ -295,7 +293,7 @@ public class KahaReferenceStoreAdapter extends KahaPersistenceAdapter implements
|
|||
protected synchronized Store getStateStore() throws IOException {
|
||||
if (this.stateStore == null) {
|
||||
File stateDirectory = new File(getDirectory(), "kr-state");
|
||||
stateDirectory.mkdirs();
|
||||
IOHelper.mkdirs(stateDirectory);
|
||||
this.stateStore = createStateStore(getDirectory());
|
||||
}
|
||||
return this.stateStore;
|
||||
|
@ -325,8 +323,8 @@ public class KahaReferenceStoreAdapter extends KahaPersistenceAdapter implements
|
|||
|
||||
private Store createStateStore(File directory) {
|
||||
File stateDirectory = new File(directory, "state");
|
||||
stateDirectory.mkdirs();
|
||||
try {
|
||||
IOHelper.mkdirs(stateDirectory);
|
||||
return StoreFactory.open(stateDirectory, "rw");
|
||||
} catch (IOException e) {
|
||||
LOG.error("Failed to create the state store", e);
|
||||
|
|
|
@ -171,5 +171,17 @@ public final class IOHelper {
|
|||
MAX_FILE_NAME_LENGTH = Integer.valueOf(System.getProperty("MaximumFileNameLength","64")).intValue();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void mkdirs(File dir) throws IOException {
|
||||
if (dir.exists()) {
|
||||
if (!dir.isDirectory()) {
|
||||
throw new IOException("Failed to create directory '" + dir +"', regular file already existed with that name");
|
||||
}
|
||||
|
||||
} else {
|
||||
if (!dir.mkdirs()) {
|
||||
throw new IOException("Failed to create directory '" + dir+"'");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@ public class HashTest extends TestCase {
|
|||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
directory = new File(IOHelper.getDefaultDataDirectory());
|
||||
directory.mkdirs();
|
||||
IOHelper.mkdirs(directory);
|
||||
IOHelper.deleteChildren(directory);
|
||||
indexManager = new IndexManager(directory, "im-hash-test", "rw", null,
|
||||
new AtomicLong());
|
||||
|
|
Loading…
Reference in New Issue