Skip to content
This repository has been archived by the owner on Sep 18, 2021. It is now read-only.

Commit

Permalink
Clean up bad collusion of call by name and factories, and a redundant…
Browse files Browse the repository at this point in the history
… AsyncQueryEvaluator creation path
  • Loading branch information
Raghavendra Prabhu committed Mar 15, 2012
1 parent 9053516 commit 2f80c6e
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ package com.twitter.querulous.async
import java.util.concurrent.{Executors, LinkedBlockingQueue, TimeUnit, ThreadPoolExecutor}
import java.sql.ResultSet
import com.twitter.util.{Future, FuturePool}
import com.twitter.querulous.config
import com.twitter.querulous.config.{Connection => ConnectionConfig}

This comment has been minimized.

Copy link
@stuhood

stuhood Mar 15, 2012

Might as well use the relative import for Connection as well.

This comment has been minimized.

Copy link
@rvpgithub

rvpgithub Mar 15, 2012

Done.

import com.twitter.querulous.DaemonThreadFactory
import com.twitter.querulous.evaluator._
import com.twitter.querulous.query.{QueryClass, SqlQueryFactory}
import com.twitter.querulous.database.{ThrottledPoolingDatabaseFactory, Database}
import com.twitter.conversions.time._


object AsyncQueryEvaluator extends AsyncQueryEvaluatorFactory {
object AsyncQueryEvaluator {
lazy val defaultWorkPool = FuturePool(Executors.newCachedThreadPool(new DaemonThreadFactory("asyncWorkPool")))
lazy val defaultMaxWaiters = Int.MaxValue

Expand All @@ -25,28 +25,6 @@ object AsyncQueryEvaluator extends AsyncQueryEvaluatorFactory {
new LinkedBlockingQueue[Runnable](maxWaiters),
new DaemonThreadFactory("asyncCheckoutPool")))
}

private def createEvaluatorFactory() = {
new StandardAsyncQueryEvaluatorFactory(
new BlockingDatabaseWrapperFactory(
defaultWorkPool,
checkoutPool(defaultMaxWaiters),
new ThrottledPoolingDatabaseFactory(10, 100.millis, 10.seconds, 1.second)
),
new SqlQueryFactory
)
}

def apply(
dbhosts: List[String],
dbname: String,
username: String,
password: String,
urlOptions: Map[String, String],
driverName: String
): AsyncQueryEvaluator = {
createEvaluatorFactory()(dbhosts, dbname, username, password, urlOptions, driverName)
}
}

trait AsyncQueryEvaluatorFactory {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import com.twitter.util.{Try, Throw, Future, Promise}
import com.twitter.util.{FuturePool, ExecutorServiceFuturePool, JavaTimer, TimeoutException}
import com.twitter.querulous.{StatsCollector, NullStatsCollector, DaemonThreadFactory}
import com.twitter.querulous.database.{Database, DatabaseFactory}

import com.twitter.querulous.config

class BlockingDatabaseWrapperFactory(
workPool: => FuturePool,
checkoutPool: => FuturePool,
workPool: config.FuturePool,
checkoutPool: config.FuturePool,
factory: DatabaseFactory,
stats: StatsCollector = NullStatsCollector)
extends AsyncDatabaseFactory {
Expand All @@ -25,8 +25,8 @@ extends AsyncDatabaseFactory {
driverName: String
): AsyncDatabase = {
new BlockingDatabaseWrapper(
workPool,
checkoutPool,
workPool(),
checkoutPool(),
factory(hosts, name, username, password, urlOptions, driverName),
stats
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ class AsyncQueryEvaluator {

memoizedFactory = memoizedFactory orElse {
var dbFactory: async.AsyncDatabaseFactory = new async.BlockingDatabaseWrapperFactory(
workPool(),
checkoutPool(),
workPool,
checkoutPool,
newDatabaseFactory(stats, dbStatsFactory),
stats
)
Expand Down

0 comments on commit 2f80c6e

Please sign in to comment.