Tutorials

This

tutorial

will

walk

you

through

basic

but

complete

CherryPy

applications

that

will

show

you

common

concepts

as

well

as

slightly

more

advanced

ones

Contents

Tutorials

Tutorial

A

basic

web

application

Tutorial

Different

URLs

lead

to

different

functions

Tutorial

My

URLs

have

parameters

Tutorial

Submit

this

form

Tutorial

Track

my

endusers

activity

Tutorial

What

about

my

javascripts

CSS

and

images

Tutorial

Give

us

a

REST

Tutorial

Make

it

smoother

with

Ajax

Tutorial

Data

is

all

my

life

Tutorial

Make

it

a

modern

singlepage

application

with

Reactjs

Tutorial

Organize

my

code

Dispatchers

Tools

Plugins

Tutorial

Using

pytest

and

code

coverage

Pytest

Adding

Code

Coverage

Tutorial

A

basic

web

application

The

following

example

demonstrates

the

most

basic

application

you

could

write

with

CherryPy

It

starts

a

server

and

hosts

an

application

that

will

be

served

at

request

reaching

import

cherrypy

class

HelloWorld

object

cherrypyexpose

def

index

self

return

Hello

world

if

cherrypy

quickstart

HelloWorld

Store

this

code

snippet

into

a

file

named

and

execute

it

as

follows

python

This

will

display

something

along

the

following

ENGINE

Listening

for

SIGHUP

ENGINE

Listening

for

SIGTERM

ENGINE

Listening

for

ENGINE

Bus

STARTING

CherryPy

Checker

The

Application

mounted

at

has

an

empty

config

ENGINE

Started

monitor

thread

Autoreloader

ENGINE

Serving

on

ENGINE

Bus

STARTED

This

tells

you

several

things

The

first

three

lines

indicate

the

server

will

handle

signal

for

you

The

next

line

tells

you

the

current

state

of

the

server

as

that

point

it

is

in

STARTING

stage

Then

you

are

notified

your

application

has

no

specific

configuration

set

to

it

Next

the

server

starts

a

couple

of

internal

utilities

that

we

will

explain

later

Finally

the

server

indicates

it

is

now

ready

to

accept

incoming

communications

as

it

listens

on

the

address

In

other

words

at

that

stage

your

application

is

ready

to

be

used

Before

moving

on

lets

discuss

the

message

regarding

the

lack

of

configuration

By

default

CherryPy

has

a

feature

which

will

review

the

syntax

correctness

of

settings

you

could

provide

to

configure

the

application

When

are

provided

a

warning

message

is

thus

displayed

in

the

logs

That

log

is

harmless

and

will

not

prevent

CherryPy

from

working

You

can

refer

to

the

documentation

above

to

understand

how

to

set

the

configuration

Tutorial

Different

URLs

lead

to

different

functions

Your

applications

will

obviously

handle

more

than

a

single

URL

Lets

imagine

you

have

an

application

that

generates

a

random

string

each

time

it

is

called

import

random

import

string

import

cherrypy

class

StringGenerator

object

cherrypyexpose

def

index

self

return

Hello

world

cherrypyexpose

def

generate

self

return

random

sample

string

hexdigits

if

cherrypy

quickstart

StringGenerator

Save

this

into

a

file

named

and

run

it

as

follows

python

Go

now

to

and

your

browser

will

display

a

random

string

Lets

take

a

minute

to

decompose

whats

happening

here

This

is

the

URL

that

you

have

typed

into

your

browser

This

URL

contains

various

parts

http

which

roughly

indicates

its

a

URL

using

the

HTTP

protocol

see

RFC

is

the

servers

address

Its

made

of

a

hostname

and

a

port

generate

which

is

the

path

segment

of

the

URL

This

is

what

CherryPy

uses

to

locate

an

exposed

function

or

method

to

respond

Here

CherryPy

uses

the

index

method

to

handle

and

the

generate

method

to

handle

generate

Tutorial

My

URLs

have

parameters

In

the

previous

tutorial

we

have

seen

how

to

create

an

application

that

could

generate

a

random

string

Lets

now

assume

you

wish

to

indicate

the

length

of

that

string

dynamically

import

random

import

string

import

cherrypy

class

StringGenerator

object

cherrypyexpose

def

index

self

return

Hello

world

cherrypyexpose

def

generate

self

length

return

random

sample

string

hexdigits

int

length

if

cherrypy

quickstart

StringGenerator

Save

this

into

a

file

named

and

run

it

as

follows

python

Go

now

to

and

your

browser

will

display

a

generated

string

of

length

Notice

how

we

benefit

from

Pythons

default

arguments

values

to

support

URLs

such

as

still

In

a

URL

such

as

this

one

the

section

after

is

called

a

querystring

Traditionally

the

querystring

is

used

to

contextualize

the

URL

by

passing

a

set

of

key

value

pairs

The

format

for

those

pairs

is

keyvalue

Each

pair

being

separated

by

a

character

Notice

how

we

have

to

convert

the

given

length

value

to

an

integer

Indeed

values

are

sent

out

from

the

client

to

our

server

as

strings

Much

like

CherryPy

maps

URL

path

segments

to

exposed

functions

querystring

keys

are

mapped

to

those

exposed

function

parameters

Tutorial

Submit

this

form

CherryPy

is

a

web

framework

upon

which

you

build

web

applications

The

most

traditional

shape

taken

by

applications

is

through

an

HTML

userinterface

speaking

to

your

CherryPy

server

Lets

see

how

to

handle

HTML

forms

via

the

following

example

import

random

import

string

import

cherrypy

class

StringGenerator

object

cherrypyexpose

def

index

self

return

html

headhead

body

form

methodget

actiongenerate

input

typetext

namelength

button

typesubmitGive

it

nowbutton

form

body

html

cherrypyexpose

def

generate

self

length

return

random

sample

string

hexdigits

int

length

if

cherrypy

quickstart

StringGenerator

Save

this

into

a

file

named

and

run

it

as

follows

python

Go

now

to

and

your

browser

and

this

will

display

a

simple

input

field

to

indicate

the

length

of

the

string

you

want

to

generate

Notice

that

in

this

example

the

form

uses

the

GET

method

and

when

you

pressed

the

button

the

form

is

sent

using

the

same

URL

as

in

the

previous

tutorial

HTML

forms

also

support

the

POST

method

in

that

case

the

querystring

is

not

appended

to

the

URL

but

it

sent

as

the

body

of

the

clients

request

to

the

server

However

this

would

not

change

your

applications

exposed

method

because

CherryPy

handles

both

the

same

way

and

uses

the

exposeds

handler

parameters

to

deal

with

the

querystring

key

value

pairs

Tutorial

Track

my

endusers

activity

Its

not

uncommon

that

an

application

needs

to

follow

the

users

activity

for

a

while

The

usual

mechanism

is

to

use

a

session

identifier

that

is

carried

during

the

conversation

between

the

user

and

your

application

import

random

import

string

import

cherrypy

class

StringGenerator

object

cherrypyexpose

def

index

self

return

html

headhead

body

form

methodget

actiongenerate

input

typetext

namelength

button

typesubmitGive

it

nowbutton

form

body

html

cherrypyexpose

def

generate

self

length

random

sample

string

hexdigits

int

length

cherrypy

session

mystring

return

cherrypyexpose

def

display

self

return

cherrypy

session

mystring

if

conf

toolssessionson

True

cherrypy

quickstart

StringGenerator

conf

Save

this

into

a

file

named

and

run

it

as

follows

python

In

this

example

we

generate

the

string

as

in

the

previous

tutorial

but

also

store

it

in

the

current

session

If

you

go

to

generate

a

random

string

then

go

to

you

will

see

the

string

you

just

generated

The

lines

show

you

how

to

enable

the

session

support

in

your

CherryPy

application

By

default

CherryPy

will

save

sessions

in

the

processs

memory

It

supports

more

persistent

backends

as

well

Tutorial

What

about

my

javascripts

CSS

and

images

Web

applications

are

usually

also

made

of

static

content

such

as

javascript

CSS

files

or

images

CherryPy

provides

support

to

serve

static

content

to

endusers

Lets

assume

you

want

to

associate

a

stylesheet

with

your

application

to

display

a

blue

background

color

why

not

First

save

the

following

stylesheet

into

a

file

named

stylecss

and

stored

into

a

local

directory

publiccss

body

backgroundcolor

blue

Now

lets

update

the

HTML

code

so

that

we

link

to

the

stylesheet

using

the

URL

import

os

ospath

import

random

import

string

import

cherrypy

class

StringGenerator

object

cherrypyexpose

def

index

self

return

html

head

link

hrefstaticcssstylecss

relstylesheet

head

body

form

methodget

actiongenerate

input

typetext

namelength

button

typesubmitGive

it

nowbutton

form

body

html

cherrypyexpose

def

generate

self

length

random

sample

string

hexdigits

int

length

cherrypy

session

mystring

return

cherrypyexpose

def

display

self

return

cherrypy

session

mystring

if

conf

toolssessionson

True

toolsstaticdirroot

os

path

abspath

os

getcwd

static

toolsstaticdiron

True

toolsstaticdirdir

public

cherrypy

quickstart

StringGenerator

conf

Save

this

into

a

file

named

and

run

it

as

follows

python

Going

to

you

should

be

greeted

by

a

flashy

blue

color

CherryPy

provides

support

to

serve

a

single

file

or

a

complete

directory

structure

Most

of

the

time

this

is

what

youll

end

up

doing

so

this

is

what

the

code

above

demonstrates

First

we

indicate

the

root

directory

of

all

of

our

static

content

This

must

be

an

absolute

path

for

security

reason

CherryPy

will

complain

if

you

provide

only

relative

paths

when

looking

for

a

match

to

your

URLs

Then

we

indicate

that

all

URLs

which

path

segment

starts

with

static

will

be

served

as

static

content

We

map

that

URL

to

the

public

directory

a

direct

child

of

the

root

directory

The

entire

subtree

of

the

public

directory

will

be

served

as

static

content

CherryPy

will

map

URLs

to

path

within

that

directory

This

is

why

staticcssstylecss

is

found

in

publiccssstylecss

Tutorial

Give

us

a

REST

Its

not

unusual

nowadays

that

web

applications

expose

some

sort

of

datamodel

or

computation

functions

Without

going

into

its

details

one

strategy

is

to

follow

the

REST

principles

edicted

by

Roy

T

Fielding

Roughly

speaking

it

assumes

that

you

can

identify

a

resource

and

that

you

can

address

that

resource

through

that

identifier

What

for

you

may

ask

Well

mostly

these

principles

are

there

to

ensure

that

you

decouple

as

best

as

you

can

the

entities

your

application

expose

from

the

way

they

are

manipulated

or

consumed

To

embrace

this

point

of

view

developers

will

usually

design

a

web

API

that

expose

pairs

of

URL

HTTP

method

data

constraints

Note

You

will

often

hear

REST

and

web

API

together

The

former

is

one

strategy

to

provide

the

latter

This

tutorial

will

not

go

deeper

in

that

whole

web

API

concept

as

its

a

much

more

engaging

subject

but

you

ought

to

read

more

about

it

online

Lets

go

through

a

small

example

of

a

very

basic

web

API

mildly

following

REST

principles

import

random

import

string

import

cherrypy

cherrypyexpose

class

StringGeneratorWebService

object

cherrypytoolsaccept

media

textplain

def

GET

self

return

cherrypy

session

mystring

def

POST

self

length

random

sample

string

hexdigits

int

length

cherrypy

session

mystring

return

def

PUT

self

cherrypy

session

mystring

def

DELETE

self

cherrypy

session

pop

mystring

if

conf

requestdispatch

cherrypy

dispatch

MethodDispatcher

toolssessionson

True

True

ContentType

textplain

cherrypy

quickstart

StringGeneratorWebService

conf

Save

this

into

a

file

named

and

run

it

as

follows

python

Before

we

see

it

in

action

lets

explain

a

few

things

Until

now

CherryPy

was

creating

a

tree

of

exposed

methods

that

were

used

to

match

URLs

In

the

case

of

our

web

API

we

want

to

stress

the

role

played

by

the

actual

requests

HTTP

methods

So

we

created

methods

that

are

named

after

them

and

they

are

all

exposed

at

once

by

decorating

the

class

itself

with

cherrypyexpose

However

we

must

then

switch

from

the

default

mechanism

of

matching

URLs

to

method

for

one

that

is

aware

of

the

whole

HTTP

method

shenanigan

This

is

what

goes

on

line

where

we

create

a

MethodDispatcher

instance

Then

we

force

the

responses

contenttype

to

be

textplain

and

we

finally

ensure

that

GET

requests

will

only

be

responded

to

clients

that

accept

that

contenttype

by

having

a

Accept

textplain

header

set

in

their

request

However

we

do

this

only

for

that

HTTP

method

as

it

wouldnt

have

much

meaning

on

the

other

methods

For

the

purpose

of

this

tutorial

we

will

be

using

a

Python

client

rather

than

your

browser

as

we

wouldnt

be

able

to

actually

try

our

web

API

otherwise

Please

install

requests

through

the

following

command

pip

install

requests

Then

fire

up

a

Python

terminal

and

try

the

following

commands

import

requests

s

requests

Session

r

s

get

r

r

s

post

r

r

text

r

s

get

r

r

text

r

s

get

headers

Accept

applicationjson

r

r

s

put

params

hello

r

s

get

r

r

text

uhello

r

s

delete

r

s

get

r

The

first

and

last

responses

stem

from

the

fact

that

in

the

first

case

we

havent

yet

generated

a

string

through

POST

and

on

the

latter

case

that

it

doesnt

exist

after

weve

deleted

it

Lines

show

you

how

the

application

reacted

when

our

client

requested

the

generated

string

as

a

JSON

format

Since

we

configured

the

web

API

to

only

support

plain

text

it

returns

the

appropriate

HTTP

error

code

Note

We

use

the

Session

interface

of

requests

so

that

it

takes

care

of

carrying

the

session

id

stored

in

the

request

cookie

in

each

subsequent

request

That

is

handy

Important

Its

all

about

RESTful

URLs

these

days

isnt

it

It

is

likely

your

URL

will

be

made

of

dynamic

parts

that

you

will

not

be

able

to

match

to

page

handlers

For

example

can

not

be

directly

handled

by

the

default

CherryPy

dispatcher

since

the

segments

and

will

not

be

matched

to

any

Python

callable

This

can

be

easily

workaround

with

two

handy

CherryPy

features

explained

in

the

advanced

section

Tutorial

Make

it

smoother

with

Ajax

In

the

recent

years

web

applications

have

moved

away

from

the

simple

pattern

of

HTML

forms

refresh

the

whole

page

This

traditional

scheme

still

works

very

well

but

users

have

become

used

to

web

applications

that

dont

refresh

the

entire

page

Broadly

speaking

web

applications

carry

code

performed

clientside

that

can

speak

with

the

backend

without

having

to

refresh

the

whole

page

This

tutorial

will

involve

a

little

more

code

this

time

around

First

lets

see

our

CSS

stylesheet

located

in

publiccssstylecss

body

backgroundcolor

blue

thestring

display

Were

adding

a

simple

rule

about

the

element

that

will

display

the

generated

string

By

default

lets

not

show

it

up

Save

the

following

HTML

code

into

a

file

named

indexhtml

DOCTYPE

html

html

head

link

href

staticcssstylecss

rel

stylesheet

script

src

script

script

type

textjavascript

document

ready

function

generatestring

click

function

e

post

generator

length

inputnamelength

val

done

function

string

thestring

show

thestring

input

val

string

e

preventDefault

replacestring

click

function

e

ajax

type

PUT

url

generator

data

thestring

input

val

done

function

alert

Replaced

e

preventDefault

deletestring

click

function

e

ajax

type

DELETE

url

generator

done

function

thestring

hide

e

preventDefault

script

head

body

input

type

text

value

name

length

button

id

generatestring

Give

it

now

button

div

id

thestring

input

type

text

button

id

replacestring

Replace

button

button

id

deletestring

Delete

it

button

div

body

html

Well

be

using

the

jQuery

framework

out

of

simplicity

but

feel

free

to

replace

it

with

your

favourite

tool

The

page

is

composed

of

simple

HTML

elements

to

get

user

input

and

display

the

generated

string

It

also

contains

clientside

code

to

talk

to

the

backend

API

that

actually

performs

the

hard

work

Finally

heres

the

applications

code

that

serves

the

HTML

page

above

and

responds

to

requests

to

generate

strings

Both

are

hosted

by

the

same

application

server

import

os

ospath

import

random

import

string

import

cherrypy

class

StringGenerator

object

cherrypyexpose

def

index

self

return

open

indexhtml

cherrypyexpose

class

StringGeneratorWebService

object

cherrypytoolsaccept

media

textplain

def

GET

self

return

cherrypy

session

mystring

def

POST

self

length

random

sample

string

hexdigits

int

length

cherrypy

session

mystring

return

def

PUT

self

cherrypy

session

mystring

def

DELETE

self

cherrypy

session

pop

mystring

if

conf

toolssessionson

True

toolsstaticdirroot

os

path

abspath

os

getcwd

generator

requestdispatch

cherrypy

dispatch

MethodDispatcher

True

ContentType

textplain

static

toolsstaticdiron

True

toolsstaticdirdir

public

webapp

StringGenerator

webapp

generator

StringGeneratorWebService

cherrypy

quickstart

webapp

conf

Save

this

into

a

file

named

and

run

it

as

follows

python

Go

to

and

play

with

the

input

and

buttons

to

generate

replace

or

delete

the

strings

Notice

how

the

page

isnt

refreshed

simply

part

of

its

content

Notice

as

well

how

your

frontend

converses

with

the

backend

using

a

straightfoward

yet

clean

web

service

API

That

same

API

could

easily

be

used

by

nonHTML

clients

Tutorial

Data

is

all

my

life

Until

now

all

the

generated

strings

were

saved

in

the

session

which

by

default

is

stored

in

the

process

memory

Though

you

can

persist

sessions

on

disk

or

in

a

distributed

memory

store

this

is

not

the

right

way

of

keeping

your

data

on

the

long

run

Sessions

are

there

to

identify

your

user

and

carry

as

little

amount

of

data

as

necessary

for

the

operation

carried

by

the

user

To

store

persist

and

query

data

you

need

a

proper

database

server

There

exist

many

to

choose

from

with

various

paradigm

support

relational

PostgreSQL

SQLite

MariaDB

Firebird

columnoriented

HBase

Cassandra

keystore

redis

memcached

document

oriented

Couchdb

MongoDB

graphoriented

Lets

focus

on

the

relational

ones

since

they

are

the

most

common

and

probably

what

you

will

want

to

learn

first

For

the

sake

of

reducing

the

number

of

dependencies

for

these

tutorials

we

will

go

for

the

sqlite

database

which

is

directly

supported

by

Python

Our

application

will

replace

the

storage

of

the

generated

string

from

the

session

to

a

SQLite

database

The

application

will

have

the

same

HTML

code

as

tutorial

So

lets

simply

focus

on

the

application

code

itself

import

os

ospath

import

random

import

import

string

import

time

import

cherrypy

mydb

class

StringGenerator

object

cherrypyexpose

def

index

self

return

open

indexhtml

cherrypyexpose

class

StringGeneratorWebService

object

cherrypytoolsaccept

media

textplain

def

GET

self

with

as

c

cherrypy

session

ts

time

time

r

c

execute

SELECT

value

FROM

WHERE

cherrypy

session

id

return

r

fetchone

def

POST

self

length

random

sample

string

hexdigits

int

length

with

as

c

cherrypy

session

ts

time

time

c

execute

INSERT

INTO

VALUES

cherrypy

session

id

return

def

PUT

self

with

as

c

cherrypy

session

ts

time

time

c

execute

UPDATE

SET

value

WHERE

cherrypy

session

id

def

DELETE

self

cherrypy

session

pop

ts

with

as

c

c

execute

DELETE

FROM

WHERE

cherrypy

session

id

def

Create

the

table

in

the

database

on

server

startup

with

as

con

con

execute

CREATE

TABLE

value

def

Destroy

the

table

from

the

database

on

server

shutdown

with

as

con

con

execute

DROP

TABLE

if

conf

toolssessionson

True

toolsstaticdirroot

os

path

abspath

os

getcwd

generator

requestdispatch

cherrypy

dispatch

MethodDispatcher

True

ContentType

textplain

static

toolsstaticdiron

True

toolsstaticdirdir

public

cherrypy

engine

subscribe

start

cherrypy

engine

subscribe

stop

webapp

StringGenerator

webapp

generator

StringGeneratorWebService

cherrypy

quickstart

webapp

conf

Save

this

into

a

file

named

and

run

it

as

follows

python

Lets

first

see

how

we

create

two

functions

that

create

and

destroy

the

table

within

our

database

These

functions

are

registered

to

the

CherryPys

server

on

lines

so

that

they

are

called

when

the

server

starts

and

stops

Next

notice

how

we

replaced

all

the

session

code

with

calls

to

the

database

We

use

the

session

id

to

identify

the

users

string

within

our

database

Since

the

session

will

go

away

after

a

while

its

probably

not

the

right

approach

A

better

idea

would

be

to

associate

the

users

login

or

more

resilient

unique

identifier

For

the

sake

of

our

demo

this

should

do

Important

In

this

example

we

must

still

set

the

session

to

a

dummy

value

so

that

the

session

is

not

discarded

on

each

request

by

CherryPy

Since

we

now

use

the

database

to

store

the

generated

string

we

simply

store

a

dummy

timestamp

inside

the

session

Note

Unfortunately

sqlite

in

Python

forbids

us

to

share

a

connection

between

threads

Since

CherryPy

is

a

multithreaded

server

this

would

be

an

issue

This

is

the

reason

why

we

open

and

close

a

connection

to

the

database

on

each

call

This

is

clearly

not

really

production

friendly

and

it

is

probably

advisable

to

either

use

a

more

capable

database

engine

or

a

higher

level

library

such

as

SQLAlchemy

to

better

support

your

applications

needs

Tutorial

Make

it

a

modern

singlepage

application

with

Reactjs

In

the

recent

years

clientside

singlepage

applications

SPA

have

gradually

eaten

serverside

generated

content

web

applicationss

lunch

This

tutorial

demonstrates

how

to

integrate

with

Reactjs

a

Javascript

library

for

SPA

released

by

Facebook

in

Please

refer

to

Reactjs

documentation

to

learn

more

about

it

To

demonstrate

it

lets

use

the

code

from

tutorial

However

we

will

be

replacing

the

HTML

and

Javascript

code

First

lets

see

how

our

HTML

code

has

changed

DOCTYPE

html

html

head

link

href

staticcssstylecss

rel

stylesheet

script

src

script

script

src

script

script

src

script

head

body

div

id

generator

div

script

type

textbabel

src

staticjsgenjs

script

body

html

Basically

we

have

removed

the

entire

Javascript

code

that

was

using

jQuery

Instead

we

load

the

Reactjs

library

as

well

as

a

new

local

Javascript

module

named

genjs

and

located

in

the

publicjs

directory

Wow

What

a

lot

of

code

for

something

so

simple

isnt

it

The

entry

point

is

the

last

few

lines

where

we

indicate

that

we

want

to

render

the

HTML

code

of

the

StringGeneratorBox

Reactjs

class

inside

the

generator

div

When

the

page

is

rendered

so

is

that

component

Notice

how

it

is

also

made

of

another

component

that

renders

the

form

itself

This

might

be

a

little

over

the

top

for

such

a

simple

example

but

hopefully

will

get

you

started

with

Reactjs

in

the

process

There

is

not

much

to

say

and

hopefully

the

meaning

of

that

code

is

rather

clear

The

component

has

an

internal

state

in

which

we

store

the

current

string

as

generatedmodified

by

the

user

When

the

user

changes

the

content

of

the

input

boxes

the

state

is

updated

on

the

client

side

Then

when

a

button

is

clicked

that

state

is

sent

out

to

the

backend

server

using

the

API

endpoint

and

the

appropriate

action

takes

places

Then

the

state

is

updated

and

so

is

the

view

Tutorial

Organize

my

code

CherryPy

comes

with

a

powerful

architecture

that

helps

you

organizing

your

code

in

a

way

that

should

make

it

easier

to

maintain

and

more

flexible

Several

mechanisms

are

at

your

disposal

this

tutorial

will

focus

on

the

three

main

ones

dispatchers

tools

plugins

In

order

to

understand

them

lets

imagine

you

are

at

a

superstore

You

have

several

tills

and

people

queuing

for

each

of

them

those

are

your

requests

You

have

various

sections

with

food

and

other

stuff

these

are

your

data

Finally

you

have

the

superstore

people

and

their

daily

tasks

to

make

sure

sections

are

always

in

order

this

is

your

backend

In

spite

of

being

really

simplistic

this

is

not

far

from

how

your

application

behaves

CherryPy

helps

you

structure

your

application

in

a

way

that

mirrors

these

highlevel

ideas

Dispatchers

Coming

back

to

the

superstore

example

it

is

likely

that

you

will

want

to

perform

operations

based

on

the

till

Have

a

till

for

baskets

with

less

than

ten

items

Have

a

till

for

disabled

people

Have

a

till

for

pregnant

women

Have

a

till

where

you

can

only

using

the

store

card

To

support

these

usecases

CherryPy

provides

a

mechanism

called

a

dispatcher

A

dispatcher

is

executed

early

during

the

request

processing

in

order

to

determine

which

piece

of

code

of

your

application

will

handle

the

incoming

request

Or

to

continue

on

the

store

analogy

a

dispatcher

will

decide

which

till

to

lead

a

customer

to

Tools

Lets

assume

your

store

has

decided

to

operate

a

discount

spree

but

only

for

a

specific

category

of

customers

CherryPy

will

deal

with

such

use

case

via

a

mechanism

called

a

tool

A

tool

is

a

piece

of

code

that

runs

on

a

perrequest

basis

in

order

to

perform

additional

work

Usually

a

tool

is

a

simple

Python

function

that

is

executed

at

a

given

point

during

the

process

of

the

request

by

CherryPy

Plugins

B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


uv_udp_t UDP handle UDP handles encapsulate UDP communication for both clients and servers Data types uv_udp_t UDP handle type uv_udp_send_t UDP send request type uv_udp_flags Flags used in uv_udp_bind and uv_udp_recv_cb enum uv_udp_flags Disables dual stack mode UV_UDP_IPV6ONLY 1 Indicates message was truncated because read buffer was too small The remainder was discarded by the OS Used in uv_udp_recv_cb UV_UDP_PARTIAL 2 Indicates if SO_REUSEADDR will be set when binding the handle in uv_udp_bind This sets the SO_REUSEPORT socket flag on the BSDs and OS X On other Unix platforms it sets the SO_REUSEADDR flag What that means is that multiple threads or processes can bind to the same address without error provided they all set the flag but only the last one to bind will receive any traffic in effect stealing the port from the previous listener UV_UDP_REUSEADDR 4 void uv_udp_send_cb uv_udp_send_t req int status Type definition for callback passed to uv_udp_send which is called after the data was sent void uv_udp_recv_cb uv_udp_t handle ssize_t nread const uv_buf_t buf const struct sockaddr addr unsigned flags Type definition for callback passed to uv_udp_recv_start which is called when the endpoint receives data handle UDP handle nread Number of bytes that have been received 0 if there is no more data to read You may discard or repurpose the read buffer Note that 0 may also mean that an empty datagram was received in this case addr is not NULL 0 if a transmission error was detected buf uv_buf_t with the received data addr struct sockaddr containing the address of the sender Can be NULL Valid for the duration of the callback only flags One or more ored UV_UDP_ constants Right now only UV_UDP_PARTIAL is used Note The receive callback will be called with nread 0 and addr NULL when there is nothing to read and with nread 0 and addr NULL when an empty UDP packet is received uv_membership Membership type for a multicast address typedef enum UV_LEAVE_GROUP 0 UV_JOIN_GROUP uv_membership Public members size_t uv_udp_tsend_queue_size Number of bytes queued for sending This field strictly shows how much information is currently queued size_t uv_udp_tsend_queue_count Number of send requests currently in the queue awaiting to be processed uv_udp_t uv_udp_send_thandle UDP handle where this send request is taking place See also The uv_handle_t members also apply API int uv_udp_init uv_loop_t loop uv_udp_t handle Initialize a new UDP handle The actual socket is created lazily Returns 0 on success int uv_udp_init_ex uv_loop_t loop uv_udp_t handle unsigned int flags Initialize the handle with the specified flags At the moment the lower 8 bits of the flags parameter are used as the socket domain A socket will be created for the given domain If the specified domain is AF_UNSPEC no socket is created just like uv_udp_init New in version 170 int uv_udp_open uv_udp_t handle uv_os_sock_t sock Opens an existing file descriptor or Windows SOCKET as a UDP handle Unix only The only requirement of the sock argument is that it follows the datagram contract works in unconnected mode supports sendmsgrecvmsg etc In other words other datagramtype sockets like raw sockets or netlink sockets can also be passed to this function Changed in version 121 the file descriptor is set to nonblocking mode Note The passed file descriptor or SOCKET is not checked for its type but its required that it represents a valid datagram socket int uv_udp_bind uv_udp_t handle const struct sockaddr addr unsigned int flags Bind the UDP handle to an IP address and port Parameters handle UDP handle Should have been initialized with uv_udp_init addr struct sockaddr_in or struct sockaddr_in6 with the address and port to bind to flags Indicate how the socket will be bound UV_UDP_IPV6ONLY and UV_UDP_REUSEADDR are supported Returns 0 on success or an error code 0 on failure int uv_udp_getsockname const uv_udp_t handle struct sockaddr name int namelen Get the local IP and port of the UDP handle Parameters handle UDP handle Should have been initialized with uv_udp_init and bound name Pointer to the structure to be filled with the address data In order to support IPv4 and IPv6 struct sockaddr_storage should be used namelen On input it indicates the data of the name field On output it indicates how much of it was filled Returns 0 on success or an error code 0 on failure int uv_udp_set_membership uv_udp_t handle const char multicast_addr const char interface_addr uv_membership membership Set membership for a multicast address Parameters handle UDP handle Should have been initialized with uv_udp_init multicast_addr Multicast address to set membership for interface_addr Interface address membership Should be UV_JOIN_GROUP or UV_LEAVE_GROUP Returns 0 on success or an error code 0 on failure int uv_udp_set_multicast_loop uv_udp_t handle int on Set IP multicast loop flag Makes multicast packets loop back to local sockets Parameters handle UDP handle Should have been initialized with uv_udp_init on 1 for on 0 for off Returns 0 on success or an error code 0 on failure int uv_udp_set_multicast_ttl uv_udp_t handle int ttl Set the multicast ttl Parameters handle UDP handle Should have been initialized with uv_udp_init ttl 1 through 255 Returns 0 on success or an error code 0 on failure int uv_udp_set_multicast_interface uv_udp_t handle const char interface_addr Set the multicast interface to send or receive data on Parameters handle UDP handle Should have been initialized with uv_udp_init interface_addr interface address Returns 0 on success or an error code 0 on failure int uv_udp_set_broadcast uv_udp_t handle int on Set broadcast on or off Parameters handle UDP handle Should have been initialized with uv_udp_init on 1 for on 0 for off Returns 0 on success or an error code 0 on failure int uv_udp_set_ttl uv_udp_t handle int ttl Set the time to live Parameters handle UDP handle Should have been initialized with uv_udp_init ttl 1 through 255 Returns 0 on success or an error code 0 on failure int uv_udp_send uv_udp_send_t req uv_udp_t handle const uv_buf_t bufs unsigned int nbufs const struct sockaddr addr uv_udp_send_cb send_cb Send data over the UDP socket If the socket has not previously been bound with uv_udp_bind it will be bound to 0000 the all interfaces IPv4 address and a random port number On Windows if the addr is initialized to point to an unspecified address 0000 or it will be changed to point to localhost This is done to match the behavior of Linux systems Parameters req UDP request handle Need not be initialized handle UDP handle Should have been initialized with uv_udp_init bufs List of buffers to send nbufs Number of buffers in bufs addr struct sockaddr_in or struct sockaddr_in6 with the address and port of the remote peer send_cb Callback to invoke when the data has been sent out Returns 0 on success or an error code 0 on failure Changed in version 1190 added 0000 and to localhost mapping int uv_udp_try_send uv_udp_t handle const uv_buf_t bufs unsigned int nbufs const struct sockaddr addr Same as uv_udp_send but wont queue a send request if it cant be completed immediately Returns 0 number of bytes sent it matches the given buffer size 0 negative error code UV_EAGAIN is returned when the message cant be sent immediately int uv_udp_recv_start uv_udp_t handle uv_alloc_cb alloc_cb uv_udp_recv_cb recv_cb Prepare for receiving data If the socket has not previously been bound with uv_udp_bind it is bound to 0000 the all interfaces IPv4 address and a random port number Parameters handle UDP handle Should have been initialized with uv_udp_init alloc_cb Callback to invoke when temporary storage is needed recv_cb Callback to invoke with received data Returns 0 on success or an error code 0 on failure int uv_udp_recv_stop uv_udp_t handle Stop listening for incoming datagrams Parameters handle UDP handle Should have been initialized with uv_udp_init Returns 0 on success or an error code 0 on failure size_t uv_udp_get_send_queue_size const uv_udp_t handle Returns handlesend_queue_size New in version 1190 size_t uv_udp_get_send_queue_count const uv_udp_t handle Returns handlesend_queue_count New in version 1190 See also The uv_handle_t API functions also apply

O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O


Distributed Search Hide Contents Documentation Splunk Enterprise Distributed Search Configure the search head cluster Distributed Search Overview of distributed search Deploy distributed search Manage distributed search View distributed search status Manage parallel reduce search processing Overview of search head clustering Deploy search head clustering Configure search head clustering Configure the search head cluster Choose the replication factor for the search head cluster Set a security key for the search head cluster Update search head cluster members Manage search head clustering Troubleshoot search head clustering Search head pooling Mount the knowledge bundle Distributed search in action Troubleshoot distributed search Download topic as PDF Configure the search head cluster This topic describes how to configure the behavior of the search head cluster itself It does not describe how to configure the searchtime environment of the cluster members such as the set of saved searches dashboards and apps that the members have access to For information on configuring the searchtime environment see the chapter Update search head cluster members The members store their cluster configurations in their local serverconf files located under SPLUNK_HOMEetcsystemlocal See the serverconf specification file for details on all available configuration attributes Key information Remember these key points while reading this topic The essential configuration occurs when you initialize each member during the deployment process Search head clustering has a large number of configuration settings available With a few exceptions you should not change these settings from their initial or default values without guidance from Splunk Support You must maintain identical settings across all members except as noted When you do change a setting across all members you must restart all the members at approximately the same time Initializationtime configurations You can set all essential configurations during the deployment process when you initialize each member These are the key configuration attributes that you can or must set for each cluster member during initialization The members URI See Deploy a search head cluster The members replication port See Deploy a search head cluster The clusters replication factor See Choose the replication factor for the search head cluster The clusters security key See Set a security key for the search head cluster The deployer location See Point the cluster members to the deployer The clusters label See Deploy a search head cluster Caution It is strongly recommended that you set all these attributes during initialization and do not later change them See Deploy a search head cluster Postinitialization configuration changes The main configuration changes that you can safely perform on your own postinitialization are the ad hoc search settings There are two of these one for specifying whether a particular member should run ad hoc searches only and another for specifying whether the member currently functioning as the captain should run ad hoc searches only The captain will not assign scheduled searches to ad hoc members See Configure a cluster member to run ad hoc searches only You can also temporarily switch to a static captain as a work around for disaster recovery See Use static captain to recover from loss of majority Caution Do not edit the id attribute in the shclustering stanza The system sets it automatically This attribute must conform to the requirements for a valid GUID Set the search head cluster label You usually set the cluster label with the splunk init command when you deploy the cluster If you did not set it during deployment you can later set it for the cluster by running this command on any one member splunk edit shclusterconfig shcluster_label label You do not need to restart the member after setting the label Note If you set the label on a cluster member you must also set it on the deployer See Configure the deployer The shcluster_label parameter is useful for identifying the cluster in the monitoring console See Set cluster labels in Monitoring Splunk Enterprise Maintain the same configuration settings across all members The serverconf attributes for search head clustering must have the same values across all members with these exceptions mgmt_uri adhoc_searchhead replication_portport If any configuration values other than these ones vary from member to member then the behavior of the cluster will change depending on which member is currently serving as captain You do not want that to occur Configuration methods Most of the configuration occurs during initial cluster deployment through the CLI splunk init command To perform further configuration later you have two choices Use the CLI splunk edit shclusterconfig command Edit the shclustering stanza in serverconf directly It is generally simpler to use the CLI Caution You must make the same configuration changes on all members and then restart them all at approximately the same time Because of the importance of maintaining identical settings across all members do not use the splunk rollingrestart command to restart except when changing the captain_is_adhoc_searchhead attribute as described in Configure a cluster member to run ad hoc searches only Instead run the splunk restart command on each member Configure search head clustering with the CLI You can use the CLI splunk edit shclusterconfig command to make edits to the shclustering stanza in serverconf Specify each attribute and its configured value as a key value pair For example to edit the adhoc_searchhead attribute splunk edit shclusterconfig adhoc_searchhead true auth usernamepassword The CLI confirms that the operation was successful and instructs you to restart splunkd Note the following You can use this command to edit any attribute in the shclustering stanza except the disabled attribute which turns search head clustering on and off You can only use this command on a member that has already been initialized For initial configuration use splunk init shclusterconfig Configure search head clustering by editing serverconf You can also change attributes by directly editing serverconf The search head clustering attributes are located in the shclustering stanza with one exception To modify the replication port use the replication_port stanza Use rolling upgrade Choose the replication factor for the search head cluster This documentation applies to the following versions of Splunk Enterprise 650 651 651612 Splunk Cloud only 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 6610 6611 700 701 702 703 704 705 706 707 708 710 711 712 713 714 720 721 Configure the search head cluster Key information Initializationtime configurations Postinitialization configuration changes Set the search head cluster label Maintain the same configuration settings across all members Configuration methods

O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O B I I O O O O O O B I I O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O B I I O O O O O O O O O O O B I I O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O B I I O O O O O O O O O O O


At Done Rite Hauling in St Petersburg we are a full service hauling company that can haul away anything and everything Heres just a few of the items we can haul away Garbage Waste Construction Debris Plant Matter Brush Batteries Tree Limbs and Trimmings Bushes and Shrubs Electronics Desktop Computers Laptop Computer Printers Scanner Computer Monitors All Types Televisions All Types Furniture Couches Loveseats Sofas Patio Furniture Chairs Tables Unwanted Household Items Paint Chemicals Pallets Hazardous Materials Childrens Toys Outdoor Spas Sheds Toilets Showers Large and Small Appliances Refrigerators Freezers Ovens Stoves Washers Dryers Microwaves Yard Waste Drywall Wood Sheetrock Roofing Tiles Shingles Driveways Concrete Asphalt Gravel Mulch Sod Dirt Special pricing may apply for certain items including Paints Chemicals and Electrical Items Need it Hauled Have it 7273657892 Dumpster Rentals Our Junk Hauling solutions include Drop Off Trailer Rentals Dumpsters Roll Off Boxes Containers Load it yourself or let us load it for you Done Rite Hauling works with Homeowners Realtors Property Managers Banks Mortgage Companies and more Our specialty is Property Preservation We can handle the entire clean out and clean up of a property from start to finish Whether you need some demolition work your garage cleaned out or just a couple of items picked up Done Rite Hauling has the experience and prices that are right for you Give us a call at 7273657892 and we can help with Spring Cleaning Emergency Storm Work Rock Mulch Dirt Delivery Cleaning Up Clutter Ask About Contractor Pricing Allow us to handle what your curbside service company wont We can also deliver rock mulch dirt etc Who needs another 1800Junk company We offer the same service at a better price but we can also leave the container for you to load Can they do that Done Rite Hauling is your solution for Hauling and Junk Removal in the St Petersburg area Recycling We also recycle everything we can This includes Aluminum Copper Scrap Metal Dirt Sod Cement Tile Batteries and more With landfills filling up we are always looking to the best renewable resources for proper disposal Call us for a FREE no obligation estimate Same Day Service 7 Days A Week 24 Hours A Day 7273657892 Proudly Serving St Petersburg FL and the Surrounding Communities Pinellas County Seminole Largo Clearwater Pinellas Park St Petersburg South Pasadena Tierra Verde Gulfport Belleair Belleair Bluffs Belleair Beach Indian Rocks Beach Redington Shores Redington Beach Madeira Beach Treasure Island Sunset Beach Oldsmar and the surrounding areas Pasco County Holiday Newport Richey Port Richey and Odessa Hillsborough County South Tampa Tampa Citrus Park Temple Terrace Carrollwood West Chase and Port Tampa Call at 7273657892

O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O

done rite hauling
dumpster rentals
recycling


The doubled die variety is one of the most popular die varieties for collectors Because doubled dies are so popular there is a lot of information out there about these varieties and they are often seen for sale on internet auction sites such as Ebay Unfortunately not all of the information out there is correct A frequent misconception about doubled dies is that they are produced when coins are struck twice by the dies This is definitely not the case All US coins made for circulation are only struck once unless there is a mishap in the coining press Even then the resulting error coins will NOT be doubled dies Only proof coins are struck more than once with the number of times that they are struck depending on the alloy of the planchets that will be struck into coins But even here the number of times that a proof coin is struck will have The key to doubled dies lies in the name doubled die As we have seen coins are struck by steel rods that bear the design images for the coins that they will be striking These steel rods are called dies For a doubled die coin to be produced the doubled image must be on the die itself hence the term doubled die Doubled dies occur when there are mishaps in making the dies that will be used to strike the coins On the How Dies Are Made page of this website we saw that for most of the Mints die making history the master design for a coin was transferred to a Master Hub in a reduction lathe These have recently been replaced by CNC computer numerical control milling machines but the principal is still the same The master hub is then used in a hubbing press to create Master Dies The master dies are used in a hubbing press to create Working Hubs and the working hubs are then used in a hubbing press to create Working Dies It is the working dies that are then used to strike the coins in the coining presses In the Wexler Die Variety Files we define doubled die doubling as doubling produced on hubs or dies as a result of a misalignment of the images on the hub and die at some point during the hubbing process A more accurate term would be hubbing doubling but the term doubled die is clearly fixed in our culture and here to stay The misalignment of the design images may have been when the master hub was squeezing an image onto a master die when a master die was squeezing an image onto a working hub or when a working hub Doubled Master Hubs Reduction Lathe Doubling Doubled Master Dies Doubled Working Hubs Since the vast majority of doubled die varieties that are reported to us are on coins from doubled working dies that is where we will focus our attention here Because of changes in Mint technology for making hubs and dies the process of making a working die can be divided into two eras These would be the multiplesqueeze hubbing era and the singlesqueeze hubbing era Prior to the use of singlesqueeze hubbing presses which could impress the complete design with a singlesqueeze hubbing the working dies were made in multiplesqueeze hubbing presses For the first hubbing a die blank was placed on the bottom of the hubbing chamber A working hub was locked into the top of the hubbing chamber directly above the die blank Here we see the hubbing chamber of a multiplesqueeze hubbing press Arrows point to the working hub which is locked into the top of the hubbing chamber A die blank with the coneshaped die face is positioned directly below the working hub This photo is courtesy of Arnold Margolis and Error Trends Coin Magazine When the press was activated the working hub was lowered into the die blank with hundreds of tons of pressure The multiplesqueeze hubbing presses did not allow a deep enough penetration into the working die to make a satisfactory impression in the working die with just one hubbing The working die had to be removed from the hubbing press and taken to an annealing oven where it was heat treated to relax the molecular structure and soften the working die so that it could receive another impression from the working hub This is an annealing oven that was in use at the Philadelphia Mint during a Coin World sponsored tour of the Philadelphia Mint in 1998 When the annealing process was completed the working die was returned to the hubbing press to receive the next impression For the second and later hubbings the setup in the hubbing press was different than that used for the first hubbing The working die was positioned on the bottom of the hubbing chamber with the working hub sitting directly on top of it When activated the top of the hubbing chamber lowered and again squeezed the working hub into the working die This photo shows a working die bottom and a working hub top positioned in the hubbing press for the second hubbing If additional hubbings were needed the setup between the hub and die in the hubbing press was the same This photo is courtesy of Arnold Margolis and Error Trends Coin Magazine The hubbing and annealing processes were repeated until it was determined that a satisfactory image was on the working die For some of the larger denominations it may have taken as many as nine or ten hubbings to leave a satisfactory image on the working die Since the working hub and working die were placed into the hubbing chamber manually there was the possibility that the working hub would not be placed on top of the working die accurately If there was any kind of misalignment of images between the working hub and the partially completed working die doubled images would appear on the working die wherever these misalignments occurred At this point a doubled die was born and if that doubled die was put into use to strike coins all coins struck by that die would show exactly the same doubling After the production of the famous 1955 Lincoln cent Die 1 doubled die variety with an extremely strong spread to the doubling the Mint took measures to prevent such widespread doubled dies from ever happening again They placed lugs around the rim of the dies and hubs so that the images on the hub and partially completed working die would align properly when they were placed in the hubbing chamber These lugs were raised on the working die and they were depressed indentations on the working hub This photo illustrates a working hub that was created for the Lincoln cent reverse If you look carefully you can see that the images on the face of the working hub are raised and look just like they will appear on the struck coins The arrows point to grooves along the edge of the hub The lugs on the working die will fit into these grooves to allow proper alignment of the working hub and the working die when more than one hubbing is needed to complete a satisfactory image on the hub or die being made This is a working die left for the reverse of the Lincoln cent as it appears after being hubbed Notice that the design is reversed from what you will see on the struck coins Though difficult to see in the photo the design is depressed incuse in the working die Arrows point to the raised areas lugs around the rim that align to the grooves of the working hub To the right of the working die we can see some more blank steel rods that can be used to make master dies working hubs or working dies In 1969 the Mint modified the obverse design for the Lincoln cent As a result of those changes they experienced difficulty in getting satisfactory impressions in the working dies To remedy the problem they removed the lugs from the hubs and dies to allow for deeper penetration of the hub into the die This did fix the problem and allowed the deeper penetration of the hub into the die but it opened up the possibility of doubled dies again being created with strong spreads It didnt take long for the consequences of this decision to be felt In 1969 a major doubled die was produced for the 1969S Lincoln cents Another major doubled die was produced for the 1970S Lincoln cents Several doubled dies found their way into production for the 1971 Lincoln cents with two major varieties known for the 1971S proof cents The dam broke in 1972 and several doubled die varieties were produced for the Lincoln cents from all three Mints including a major doubled die for the obverse of the PMint cents During this period of time significant doubled dies Over the years it has been found that different types of misalignments between the images on the hub and the images on the die could occur The various types of misalignments produced unique characteristics to the doubling found on the dies Each identifiable type of misalignment of images produced one the classes of doubled die varieties All but one of the leading die variety attributers recognize eight distinct classes of doubled die varieties Coppercoins also uses a Class IX for doubled die varieties produced on the new singlesqueeze hubbing presses All of the other attributers feel that the doubled die For more information on the various classes of doubled die varieties you can click on the following links Class I Doubled Dies Class II Doubled Dies Class III Doubled Dies Class IV Doubled Dies Class V Doubled Dies Class VI Doubled Dies Class VII Doubled Dies Class VIII Doubled Dies When the Mint introduced the singlesqueeze hubbing presses on a trial basis around 1985 and then to produce working dies at Denver and Philadelphia in 1996 and 1997 it had hoped to eliminate doubling produced during the hubbing process Unfortunately for the Mint this did not result and minor doubled dies are actually being produced more frequently on the new singlesqueeze hubbing presses than they were on the older multiplesqueeze hubbing presses We believe that we know the reason for this In the older multiplesqueeze hubbing presses the hub was fixed to the top of the hubbing chamber for the first hubbing When it descended down into the face of the die it couldnt move as it made contact with the die as it was locked into the top of the hubbing chamber In the singlesqueeze hubbing presses the set up is different The die blank is placed into the well of a collar placed in the bottom of the hubbing chamber The hub is also placed into the well of the collar so that the face of the hub is resting on the conical point of the top of the die blank Since the diameter of the well in the collar has to exceed the diameter of the die blank and the hub so that the die blank and hub can be inserted into and removed from the collar and so that Since the hub is slightly tilted at the time the hubbing begins as it is pushed down into the collar well and into the die blank it will be forced into a more vertical alignment in the collar well If there is some resistance to the vertical realignment when the hubbing begins it may snap back into proper alignment at some point as the hubbing proceeds Hubbing press operators have described a clunking sound that is heard when the hub snaps back into proper alignment When this happens there will be a misalignment between the image formed prior to the This is a photo of a singlesqueeze hubbing press in use at the Philadelphia Mint in 1998 The hubbing press operator is placing one of the collars into the hubbing press The die blank and working hub will be manually placed into the well of the collar prior to that start of the hubbing The working die will be inserted first with the coneshaped top pointing upward and the working hub will sit on top of it with the design resting on the tip of the working dies cone Because of how these doubled dies are being produced the affected area tends to be the center of the die That is due to the fact that the point of the conical top of the die blank is the first contact point with the hub and it usually doesnt take very long into the hubbing for the hub to snap or move into a more proper vertical alignment While the entire obverse and reverse should always be examined carefully the most likely place to find doubling on dies produced on the singlesqueeze hubbing presses is at the center of the On October 1 2009 I had the privilege of having a telephone conversation with George Shue Senior Advisor in Manufacturing at the US Mint During this conversation the 2009D Washington DC quarter with a major doubled die reverse came up Mr Shue noted that the Mint was aware of this doubled die error and how it occurred This particular doubled die resulted when a hubbing press operator stopped one of the singlesqueeze hubbing presses to realign the hub and die and then restarted the hubbing sequence In the process a rotational misalignment of images resulted Mr Shue further noted that The conversation further revealed that the Mint was aware that even though it was contrary to policy hubbing press operators were taking it upon themselves to sometimes stop the singlesqueeze hubbing presses before the hubbing was completed to make adjustments and then restarting the press to complete the hubbing To prevent doubled dies like the major variety seen on the 2009D Washington DC quarter from happening again the Mint has installed locks on the hubbing presses Now if a hubbing press operator stops the press before the hubbing is completed they will be unable to restart the press until a Because of the manner in which the dies receive doubled images through the hubbing process it is important to realize that doubling seen on doubled dies will be seen as raised and rounded secondary images just like the normal images on the coin Doubled letters will often show splits in the serifs of the letters whenever the letters have serifs If the letters have squared off corners those corners will often show strong notches The separation between the doubled design images is referred to as the spread of the doubling The spread of the doubling can be very wide or it can be extremely close The doubling seen here is on the 1972 Lincoln cent doubled die variety that we have listed as 1972 1 WDDO003 Notice that the doubled images are raised and rounded just like the normal letters in the word GOD This doubling is on the word PLURIBUS on the reverse of a 1962 Jefferson nickel that we have listed as 1962 5 WDDR041 Note the strong split serifs at the tops and bottoms of most of the letters Strong split serifs show at the top and bottom of the 2nd S in STATES Also note the strong notches at the top corners of the T and E This doubling is on the reverse of a 1964 Lincoln cent that we have listed as 1964 1 WDDR001 For collectors just starting to collect doubled die varieties it is important to know that there are other forms of doubling that can be found on coins that are not the product of a doubled die These other forms of doubling may have ended up on the coin when it was struck in the coining press or it may appear on the dies themselves but not as a result of design transfer in the hubbing presses If you have already done so we strongly urge you to read the Worthless Doubling page on this website It explains how these other common forms of doubling are produced and illustrates them with comparisons to examples of genuine doubled dies so that you can learn to tell the difference between the worthless doubling and the genuine doubled dies To go to the Worthless Doubling page click here Worthless Doubling In the Wexler Doubled Die Files we also classify doubled die varieties as Major Very Significant Significant Minor or Very Minor doubled die varieties The chief factors in determining which of these categories apply would be the amount of spread to the doubling andor the amount of doubling The two usually go handinhand but there are always exceptions Sometimes dealer and collector acceptance of a variety also influences the category into which a doubled die will fall Major Doubled Die Varieties These are the big boys The two most important factors are the amount of doubling andor the strength to the spread of the doubling In a number of cases the doubling is actually visible to the naked eye The 1955 doubled die Lincoln cent listed as Obverse Die 1 is without doubt a major doubled die variety It is the undisputed king of the Lincoln cent doubled die varieties The images are very widely spread and almost all design details on the obverse show the doubling On the other hand the 1984 Lincoln cent listed as Obverse Die 1 is and a large amount of doubling to be classified as a major doubled die variety This is the date on the King of the Lincoln cent doubled dies It is the 1955 Lincoln cent doubled die listed as Obverse Die 1 or 1955 1 WDDO001 This is clearly a major doubled die variety The 2009D Washington DC quarter with the doubled die listed as 2009D 25 DC WDDR001 has been recognized in the hobby as a major doubled die variety While the entire reverse is not affected the doubled area at the center of the reverse is extremely strong Very Significant Doubled Die Varieties These are varieties that come very close to being major doubled die varieties They typically have strong spreads to the doubling andor significant amounts of doubling They would make nice additions to any doubled die collection Sometimes they are not classified as major doubled dies because they are overshadowed by another doubled die for the same date and denomination An example of this would be the 1972 Lincoln cent doubled die listed as Obverse Die 2 On any other date this would be a major doubled die variety however because of the major Obverse Die 1 few consider Obverse Die This strong doubling is on the obverse of the 1972 Lincoln cent doubled die variety listed as 1972 1 WDDO002 On any other date this would probably be considered a major doubled die variety but because of the popularity of the even stronger Obverse Die 1 it is greatly overshadowed and considered to be a very significant doubled die variety The extra tree seen on the reverse of 2005P 25 MN WDDR001 is bold and widely separated It has not been touted as a major doubled die variety but certainly qualifies as a very significant variety The bold extra finger seen on 2009 1 FY WDDR006 certainly qualifies as a very significant doubled die variety Significant Doubled Die Varieties These doubled die varieties still have nice spreads andor significant amounts of doubling They should be relatively easy to spot when you know where to look for the doubling and are worthy of being included in most doubled die collections Those who collect only the easy to see varieties may exclude these from their collections This is doubling on the obverse of 1972 1 WDDO004 The spread of the doubling is much less than that seen on 1972 1 WDDO002 but it is still considered to be significant doubling as it is relatively easy to see with low magnification The strong doubling on the right side of the target tree on the reverse of the Minnesota State quarter doubled die reverse listed as 2005P 25 MN WDDR003 qualifies as a significant doubled die variety in the Wexler Doubled Die Files This nicely doubled thumb on 2009 1 FY WDDR016 qualifies as a significant doubled die variety even though it is not a large part of the design that was affected Minor Doubled Die Varieties These varieties tend to have very close spreads to the doubling andor somewhat limited amounts of doubling Stronger magnification than 10X is often needed to pick up the doubling on these varieties unless you have a well trained eye The die hard doubled die collectors will seek these out but many collectors will most likely not pursue adding them to their collections This is 1956 5 WDDR034 Doubling shows as split serifs on the upper letters A close spread can also be seen on the R and B of PLURIBUS This one would be classified as a minor doubled die variety While readily visible the doubling seen here on the underside of the thumb on 2009 1 FY WDDR008 is considered to be a minor doubled die variety This is the Minnesota State quarter doubled die variety that we have listed as 2005P 25 MN WDDR021 The doubling on the lower right part of the target tree is considered to be a minor doubled die variety Very Minor Doubled Die Varieties Doubled dies in this category tend to show very little doubling Often all that can be seen are some split serifs or some notched corners to some of the letters Many of the Lincoln cent doubled eyelid varieties fall into this category as well They may have relatively wide spreads but show only a very small doubled image Usually high magnification is required and only the hardiest of doubled die collectors will go after these Here we see a doubled eyelid variety on 1944S 1 WDDO020 It is the only doubling on the obverse of the cent making it a very minor doubled die variety The small amount of doubling on the reverse of 2009 1 EC WDDR009 puts this doubled die in the very minor category The small amount of doubling at the joint of the index finger puts this 2009 Formative Years 1 doubled die variety into the very minor doubled die category and values for it should reflect that ranking When it comes to the value of a doubled die variety rarity is certainly a major factor in determining value and you need to keep in mind the fact that the doubling is on the die that is striking the coins As long as that die is kept in use it will continue to strike coins with that doubling Some of the major and very significant doubled die varieties were caught by Mint coining press operators and removed from service These would have very low mintages that would contribute to their value However most if not all of the minor The average die life for Lincoln cents is about one million coins so if a minor Lincoln cent doubled die variety went undetected or ignored because it was deemed too minor and unimportant there most likely would be somewhere in the area of a million or more specimens available to collectors One must be careful not to pay over inflated prices for these varieties or to charge over inflated prices for them Just because it is a doubled die variety it does not mean that it is scarce rare or valuable Doubled die varieties listed in the Wexler Doubled Die Files are listed with numbers such as 1955D 1 WDDO001 The first two items give the date Mint and the denomination In this case we would be referring to a 1955 DMint cent The W in WDDO refers to the fact that it is a listing in the Wexler Files The DDO in WDDO indicates that it is an obverse doubled die variety The 001 at the end of the notation indicates that it is the first doubled die variety reported for the obverse of the 1955D Lincoln cents The second obverse doubled die reported for the 1955D Lincoln cents would be listed as 1955D 1 WDDO002 Doubled dies for Sometimes a Pr designation will be found in a doubled die listing such as 1955 1 Pr WDDO003 This indicates that the doubled die variety was found on the obverse of a 1955 proof coin and it was the third obverse doubled die reported for the 1955 Lincoln cents Likewise SF in a listing number will indicate that the coin has the Satin Finish found in the modern mint sets For some special series issued by the Mint such as the Statehood Quarters an additional notation in the listing number will give more information about the coin that the doubled die can be found on In the case of the Statehood Quarters the postal abbreviations for the states are used in the listing numbers 2005P 25 MN WDDO001 indicates that it is Obverse Die 1 for the 2005P Minnesota State quarters In the Presidential Dollar series the listings include the initials of the President being honored on that coin A listing of 2008P 1 MVB WDDR001 indicates Reverse Die 1 If you have coins that you suspect are doubled dies and would like to find out if they are indeed genuine doubled die varieties or if you know that they are doubled die varieties and would like to find out if they are listed in the Wexler Die Variety Files you can send them for attribution If you are sending coins the following guidelines must be followed 1 The fee for attributions depends on whether one side of the coin needs to be attributed or both sides need to be attributed If only one side needs to be attributed just one side has doubling the fee is 4 per coin If both sides need to be attributed both sides have doubling then the fee is 5 per coin Return postage and insurance is extra and must be included with any coins that are sent The rule of thumb for return postage is that whatever it costs you for postage and insurance to send the coins to me thats 2 You may send up to but no more than 5 coins per shipment If packages are sent with more than 5 coins it will greatly delay their return Five coins will be processed and the package then placed at the end of the mail line until it comes up again 3 Do NOT send any additional shipments until the previous shipment has been returned 4 NEVER send coins by Certified Mail If they are lost or stolen in the mail you will NOT be able to recover any of their value Certified Mail does NOT carry any insurance All coins should be sent by Insured First Class Mail or by Registered Mail By far the safest way that anyone can send coins is by Registered Mail It is more expensive but it is the safest way to send them as the package must be signed for by every individual that touches it along the way If coins are sent by Insured First Class Mail but an actual value can not be 5 If you would like to receive a notice that the coins arrived here safely you can take advantage of the delivery confirmation services available through the Post Office and also the return receipt services available from the Post Office 6 Make sure that you package your coins very carefully If they can move about in the package they might be able to tear out of the package and become lost I recommend shipping in a padded mailer available from the post office WalMart Staples etc 7 Please send your coins in plastic or vinyl flips from which they can easily be removed Do not send the coins in 2x2s that have been stapled 8 We do NOT attribute foreign coin varieties only varieties on US coinage 9 Once the coins arrive they will be processed as quickly as possible Due to large demands on the attributers it may take anywhere from 4 to 6 weeks before the coins are processed and returned It is usually less than that but we do ask your patience once they are sent Send all US doubled die varieties EXCEPT 5 doubled dies to John A Wexler PO Box 544 Quakertown PA 189510544 EMail jwexcomcastnet Send all US 5 doubled die varieties to Brian Ribar 2053 Edith Place Merrick NY 115663306 EMail bribaroptonlinenet Go To

O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O B I O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O B I O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B I O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O B I O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O O O O B I O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O B I O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B I O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O


All At A Glance Take in breathtaking views of the Gulf of Mexico from your private balcony at the Island House Hotel Orange Beach a DoubleTree by Hilton hotel Our stunning all Gulf front full service hotel is ideally located in the heart of Orange Beach Alabama close to popular attractions such as The Wharf and the Gulf State Park Enjoy a freshly baked DoubleTree chocolate chip cookie upon arrival and settle into your comfortable guest room or suite Each room features modern amenities including WiFi access and an HDTV and a spectacular beachfront view For a touch of luxury upgrade to a suite and enjoy extra space in the separate living area Suites also boast an additional bathroom a microwave and an additional balcony off the master bedroom For the ultimate indulgence our corner suites offer a 100 sq ft private patio balcony When youre feeling hungry visit our Beachside Bistro and enjoy delicious grab and go items made fresh for breakfast lunch and dinner Relax with drinks and snacks at our outdoor tiki bar or order a meal from room service and watch the sun go down from your balcony The hotel also features a fitness center a heated outdoor pool and a wading pool for children Enjoy a game of volleyball on one of the beach volleyball courts or ask a member of staff about our great golf packages Professional meeting and event space is available for a variety of events with up to 300 guests Highlights Stunning Gulf front location directly on the Gulf of Mexico Every room features Gulf front views with private balcony Beachside Bistro and Bar room service and pantry available Heated outdoor pool wading pool and fitness center Indoor and outdoor space for meetings events and weddings Beach volleyball courts and golf packages available What to do around here With the ocean as your backdrop the possibilities are endless for beach fun at the Island House Hotel Orange Beach a DoubleTree by Hilton Try your hand at snorkeling scuba diving windsurfing or water skiing Challenge friends to a game of beach volleyball or simply relax on the sugar white sands Nearby attractions include Waterville USA Adventure Island and the Gulf State Park The Wharf offers an ideal destination for families with night laser shows casual dining concerts mini golf a movie theatre and more Things to do Local Attractions The Wharf The Gulf State Park Waterville USA Adventure Island The Hangout OWA

O O O O O O O O O O O O O O O O O O O B I I O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O