Skip to content

Instantly share code, notes, and snippets.

View ericacm's full-sized avatar

Some Dude ericacm

View GitHub Profile
/**
* hosts(i) corresponds to serversKey(i) and serversVal(i)
*
* hosts are "hostname:port" (same as cluster nodeId).
* Note: port is the server's client port. port+1 and port+2 are used for serversVal.
*
* serversKey are "server.1" (see Zookeeper Admin Guide)
* serversVal are "hostname:nnnn:nnnn"
*/
case class ServerNames(hosts: IndexedSeq[String],
class ZookeeperService(hostInfo: HostInfo)
extends ClusterService with EmbeddedZookeeper with Logging {
// For Standalone use the hostname, eg. localhost
// For Replicated use hostname:port,hostname:port,...
@Value("${zookeeperService.hosts:localhost}")
var hosts: String = _
// This node's ZK server client port
def clientPort: Int = hostInfo.appBasePort + 1
def rmdir(dir: File) {
if (dir.isDirectory) {
for (entry <- dir.listFiles()) {
if (entry.isDirectory) {
rmdir(entry)
entry.delete()
}
entry.delete()
}
dir.delete()
def configureServer(serverNames: ServerNames): () => Unit = {
// Recreate data directory
if (dataDir == null || dataDir == "") {
dataDir = "./zookeeper-" + nodeId
}
val dir = new File(dataDir)
log.info("(Re)creating data directory: " + dataDir)
rmdir(dir)
dir.mkdirs()
import org.apache.zookeeper.server.quorum.{QuorumPeerMain => ApacheQuorumPeerMain}
import org.apache.zookeeper.server.{ZooKeeperServerMain => ApacheZookeeperServerMain}
trait EmbeddedZookeeper {
this: ClusterService with Logging =>
@Value("${zookeeperService.server.enabled:false}")
var isServerEnabled: Boolean = _
// Location of server data directory
@ericacm
ericacm / Topic.scala
Last active June 25, 2017 06:17
Example Hibernate entity in Scala
/*
* Topic Entity
*/
@Entity
@Table(uniqueConstraints = Array(new UniqueConstraint(columnNames=Array("application_id", "name"))))
@NamedQueries(Array(
new NamedQuery(name="Topic.findAllByApplication", query="from Topic where application=:application"),
new NamedQuery(name="Topic.findByApplicationAndName", query="from Topic where application=:application and name=:name")
))
class Topic {
@ericacm
ericacm / CslConfig.scala
Last active August 31, 2016 04:17
Example of a Scala wrapper for Typesafe Config
import io.Source
import java.io.{FileInputStream, InputStream}
import com.typesafe.config.{ConfigException, Config, ConfigFactory}
import com.foo.dbfs.{FileSystem, Factory}
import com.foo.util.Logging
import com.foo.util.Environment
/**
* CslConfig manages CSL Configuration.
*
@ericacm
ericacm / Build.scala
Created January 27, 2013 00:36
Build.scala for ClusterSingletonManagerSpec testing
import sbt._
import Keys._
import com.typesafe.sbt.SbtMultiJvm
import com.typesafe.sbt.SbtMultiJvm.MultiJvmKeys.{ MultiJvm }
object ExampleBuild extends Build {
lazy val buildSettings = Defaults.defaultSettings ++ multiJvmSettings ++ Seq(
organization := "example",
version := "1.0",
class ZookeeperService(hostInfo: HostInfo)
extends ClusterService with EmbeddedZookeeper {
def nodeId: String = hostInfo.hostname + ":" + hostInfo.basePort + 1
@Value("${zookeeperService.client.enabled:false}")
var enabled: Boolean = _
@Value("${zookeeperService.leaderPath:/ls}")
var leaderPath: String = _
@ericacm
ericacm / nodeToWorker.scala
Last active December 11, 2015 09:39
Node to worker example
val participants = clusterService.clusterStatus.participants
val workers = participants.map(nodeIdToActorRef(_))
workers.foreach(_ ! nextWork())