Search in sources :

Example 1 with TypeProbeCollection

use of com.questdb.parser.typeprobe.TypeProbeCollection in project questdb by bluestreak01.

the class BootstrapMain method main.

public static void main(String[] args) throws Exception {
    System.err.printf("QuestDB HTTP Server %s%nCopyright (C) Appsicle 2014-2018, all rights reserved.%n%n", getVersion());
    if (args.length < 1) {
        System.err.println("Root directory name expected");
        return;
    }
    if (Os.type == Os._32Bit) {
        System.err.println("QuestDB requires 64-bit JVM");
        return;
    }
    final CharSequenceObjHashMap<String> optHash = hashArgs(args);
    // expected flags:
    // -d <root dir> = sets root directory
    // -f = forces copy of site to root directory even if site exists
    // -n = disables handling of HUP signal
    String dir = optHash.get("-d");
    extractSite(dir, optHash.get("-f") != null);
    File conf = new File(dir, "conf/questdb.conf");
    if (!conf.exists()) {
        System.err.println("Configuration file does not exist: " + conf);
        return;
    }
    BootstrapEnv env = new BootstrapEnv();
    // main configuration
    env.configuration = new ServerConfiguration(conf);
    configureLoggers(env.configuration);
    env.dateFormatFactory = new DateFormatFactory();
    env.dateLocaleFactory = DateLocaleFactory.INSTANCE;
    env.typeProbeCollection = new TypeProbeCollection(new File(dir, "conf/date.formats").getAbsolutePath(), env.dateFormatFactory, env.dateLocaleFactory);
    // reader/writer factory and cache
    env.factory = new Factory(env.configuration.getDbPath().getAbsolutePath(), env.configuration.getDbPoolIdleTimeout(), env.configuration.getDbReaderPoolSize(), env.configuration.getDbPoolIdleCheckInterval());
    // URL matcher configuration
    env.matcher = new SimpleUrlMatcher();
    env.matcher.put("/imp", new ImportHandler(env));
    env.matcher.put("/exec", new QueryHandler(env));
    env.matcher.put("/exp", new CsvHandler(env));
    env.matcher.put("/chk", new ExistenceCheckHandler(env));
    env.matcher.setDefaultHandler(new StaticContentHandler(env));
    // server configuration
    // add all other jobs to server as it will be scheduling workers to do them
    final HttpServer server = new HttpServer(env);
    // monitoring setup
    final FactoryEventLogger factoryEventLogger = new FactoryEventLogger(env.factory, 10000000, 5000, MicrosecondClockImpl.INSTANCE);
    ObjHashSet<Job> jobs = server.getJobs();
    jobs.addAll(LogFactory.INSTANCE.getJobs());
    jobs.add(factoryEventLogger);
    env.factory.exportJobs(jobs);
    // welcome message
    CharSink welcome = Misc.getThreadLocalBuilder();
    if (!server.start()) {
        welcome.put("Could not bind socket ").put(env.configuration.getHttpIP()).put(':').put(env.configuration.getHttpPort());
        welcome.put(". Already running?");
        System.err.println(welcome);
        System.out.println(new Date() + " QuestDB failed to start");
    } else {
        welcome.put("Listening on ").put(env.configuration.getHttpIP()).put(':').put(env.configuration.getHttpPort());
        if (env.configuration.getSslConfig().isSecure()) {
            welcome.put(" [HTTPS]");
        } else {
            welcome.put(" [HTTP plain]");
        }
        System.err.println(welcome);
        System.out.println(new Date() + " QuestDB is running");
        if (Os.type != Os.WINDOWS && optHash.get("-n") == null) {
            // suppress HUP signal
            Signal.handle(new Signal("HUP"), signal -> {
            });
        }
        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            System.out.println(new Date() + " QuestDB is shutting down");
            server.halt();
            factoryEventLogger.close();
            env.factory.close();
        }));
    }
}
Also used : CharSink(com.questdb.std.str.CharSink) DateFormatFactory(com.questdb.std.time.DateFormatFactory) Factory(com.questdb.store.factory.Factory) LogFactory(com.questdb.log.LogFactory) DateFormatFactory(com.questdb.std.time.DateFormatFactory) DateLocaleFactory(com.questdb.std.time.DateLocaleFactory) Date(java.util.Date) Signal(sun.misc.Signal) TypeProbeCollection(com.questdb.parser.typeprobe.TypeProbeCollection) HttpServer(com.questdb.net.http.HttpServer) SimpleUrlMatcher(com.questdb.net.http.SimpleUrlMatcher) Job(com.questdb.mp.Job) File(java.io.File)

Example 2 with TypeProbeCollection

use of com.questdb.parser.typeprobe.TypeProbeCollection in project questdb by bluestreak01.

the class ImportManager method importFile.

public static void importFile(Factory factory, String fileName, char delimiter, CharSequence schema, int sampleSize, boolean forceHeader) throws IOException {
    BootstrapEnv env = new BootstrapEnv();
    env.typeProbeCollection = new TypeProbeCollection();
    env.configuration = new ServerConfiguration();
    env.factory = factory;
    try (PlainTextLexer parser = new PlainTextLexer(env).of(delimiter)) {
        File file = new File(fileName);
        String location = file.getName();
        switch(factory.getConfiguration().exists(location)) {
            case JournalConfiguration.EXISTS_FOREIGN:
                throw new JournalRuntimeException("A foreign file/directory already exists: " + (new File(factory.getConfiguration().getJournalBase(), location)));
            default:
                try (PlainTextStoringParser l = new PlainTextStoringParser(env).of(location, false, false, PlainTextStoringParser.ATOMICITY_RELAXED)) {
                    analyzeAndParse(file, parser, l, schema, sampleSize, forceHeader);
                }
                break;
        }
    }
}
Also used : BootstrapEnv(com.questdb.BootstrapEnv) PlainTextStoringParser(com.questdb.parser.plaintext.PlainTextStoringParser) TypeProbeCollection(com.questdb.parser.typeprobe.TypeProbeCollection) ServerConfiguration(com.questdb.ServerConfiguration) JournalRuntimeException(com.questdb.common.JournalRuntimeException) PlainTextLexer(com.questdb.parser.plaintext.PlainTextLexer) RandomAccessFile(java.io.RandomAccessFile) File(java.io.File)

Aggregations

TypeProbeCollection (com.questdb.parser.typeprobe.TypeProbeCollection)2 File (java.io.File)2 BootstrapEnv (com.questdb.BootstrapEnv)1 ServerConfiguration (com.questdb.ServerConfiguration)1 JournalRuntimeException (com.questdb.common.JournalRuntimeException)1 LogFactory (com.questdb.log.LogFactory)1 Job (com.questdb.mp.Job)1 HttpServer (com.questdb.net.http.HttpServer)1 SimpleUrlMatcher (com.questdb.net.http.SimpleUrlMatcher)1 PlainTextLexer (com.questdb.parser.plaintext.PlainTextLexer)1 PlainTextStoringParser (com.questdb.parser.plaintext.PlainTextStoringParser)1 CharSink (com.questdb.std.str.CharSink)1 DateFormatFactory (com.questdb.std.time.DateFormatFactory)1 DateLocaleFactory (com.questdb.std.time.DateLocaleFactory)1 Factory (com.questdb.store.factory.Factory)1 RandomAccessFile (java.io.RandomAccessFile)1 Date (java.util.Date)1 Signal (sun.misc.Signal)1