update documentation for the download status page #1169

Open
opened 2010-08-12 04:58:50 +00:00 by zooko · 10 comments

Brian's New Downloader (#287, #288, #798, #800, #990), and subsequently Brian's New Visualizer (#1200) also offers a download status page with a great deal more information than the old one. Although it is really good to have all this information available, it is rather cryptic. This ticket is to update the documentation in source:docs/frontends/download-status.rst explaining what all the fields mean.

See also #1265 which is about adding labels and documentation onto the web page itself.

Brian's New Downloader (#287, #288, #798, #800, #990), and subsequently Brian's New Visualizer (#1200) also offers a download status page with a great deal more information than the old one. Although it is really good to have all this information available, it is rather cryptic. This ticket is to update the documentation in source:docs/frontends/download-status.rst explaining what all the fields mean. See also #1265 which is about adding labels and documentation onto the web page itself.
zooko added the
c/docs
p/major
t/defect
v/1.8β
labels 2010-08-12 04:58:50 +00:00
zooko added this to the soon milestone 2010-08-12 04:58:50 +00:00
Author

Attachment down-0.html (716868 bytes) added

**Attachment** down-0.html (716868 bytes) added

I'm slowly (i.e. post-1.8.0, maybe in a 1.8.1) changing the data on this page
and adding visualizations, so I don't want to put too much energy into
documenting a transient/unstable data structure quite yet. But here's a quick
summary of what's on the new downloader status page.

First, what's involved in a download?:

  • downloads are triggered by read() calls, each with a starting offset
    (defaults to 0) and a length (defaults to the whole file). A regular
    webapi GET request will result in a whole-file read() call
  • each read() call turns into an ordered sequence of
    get_segment() calls. A whole-file read will fetch all segments, in
    order, but partial reads or multiple simultaneous reads will result in
    random-access of segments. Segment reads always return ciphertext: the
    layer above that (in read()) is responsible for decryption.
  • before we can satisfy any segment reads, we need to find some shares.
    ("DYHB" is an abbreviation for "Do You Have Block", and is the message we
    send to storage servers to ask them if they have any shares for us. The
    name is historical, from Mnet/MV, but nicely distinctive. Tahoe's actual
    message name is remote_get_buckets().). Responses come back
    eventually, or don't.
  • Once we get enough positive DYHB responses, we have enough shares to start
    downloading. We send "block requests" for various pieces of the share.
    Responses come back eventually, or don't.
  • When we get enough block-request responses for a given segment, we can
    decode the data and satisfy the segment read.
  • When the segment read completes, some or all of the segment data is used
    to satisfy the read() call (if the read call started or ended in the
    middle of a segment, we'll only use part of the data, otherwise we'll use
    all of it).

With that background, here is the data currently on the download-status page:

  • "DYHB Requests": this shows every Do-You-Have-Block query sent to storage

servers and their results. Each line shows the following:

  • the serverid to which the request was sent

  • the time at which the request was sent. Note that all timestamps are
    relative to the start of the first read() call and indicated with a
    "+" sign

  • the time at which the response was received (if ever)

  • the share numbers that the server has, if any

  • the elapsed time taken by the request

  • also, each line is colored according to the serverid. This color is also
    used in the "Requests" section below.

  • "Read Events": this shows all the FileNode read() calls and their

overall results. Each line shows:

  • the range of the file that was requested (as OFFSET:+LENGTH). A
    whole-file GET will start at 0 and read the entire file.

  • the time at which the read() was made

  • the time at which the request finished, either because the last byte of
    data was returned to the read() caller, or because they cancelled
    the read by calling stopProducing (i.e. closing the HTTP connection)

  • the number of bytes returned to the caller so far

  • the time spent on the read, so far

  • the total time spent in AES decryption

  • total time spend paused by the client (pauseProducing), generally
    because the HTTP connection filled up, which most streaming media players
    will do to limit how much data they have to buffer

  • effective speed of the read(), not including paused time

  • "Segment Events": this shows each get_segment() call and its

resolution. This table is not well organized, and my post-1.8.0 work will
clean it up a lot. In its present form, it records "request" and "delivery"
events separately, indicated by the "type" column.

  • Each request shows the segment number being requested and the time at
    which the get_segment() call was made

  • Each delivery shows:

  • segment number

  • range of file data (as OFFSET:+SIZE) delivered

  • elapsed time spent doing ZFEC decoding

  • overall elapsed time fetching the segment

  • effective speed of the segment fetch

  • "Requests": this shows every block-request sent to the storage servers.

Each line shows:

  • the server to which the request was sent
  • which share number it is referencing
  • the portion of the share data being requested (as OFFSET:+SIZE)
  • the time the request was sent
  • the time the response was received (if ever)
  • the amount of data that was received (which might be less than SIZE if we
    tried to read off the end of the share)
  • the elapsed time for the request (RTT=Round-Trip-Time)

Also note that each Request line is colored according to the serverid it was
sent to. And all timestamps are shown relative to the start of the first
read() call: for example the first DYHB message was sent at +0.001393s
about 1.4 milliseconds after the read() call started everything off.

I'm slowly (i.e. post-1.8.0, maybe in a 1.8.1) changing the data on this page and adding visualizations, so I don't want to put too much energy into documenting a transient/unstable data structure quite yet. But here's a quick summary of what's on the new downloader status page. First, what's involved in a download?: * downloads are triggered by `read()` calls, each with a starting offset (defaults to 0) and a length (defaults to the whole file). A regular webapi GET request will result in a whole-file `read()` call * each `read()` call turns into an ordered sequence of `get_segment()` calls. A whole-file read will fetch all segments, in order, but partial reads or multiple simultaneous reads will result in random-access of segments. Segment reads always return ciphertext: the layer above that (in `read()`) is responsible for decryption. * before we can satisfy any segment reads, we need to find some shares. ("DYHB" is an abbreviation for "Do You Have Block", and is the message we send to storage servers to ask them if they have any shares for us. The name is historical, from Mnet/MV, but nicely distinctive. Tahoe's actual message name is `remote_get_buckets()`.). Responses come back eventually, or don't. * Once we get enough positive DYHB responses, we have enough shares to start downloading. We send "block requests" for various pieces of the share. Responses come back eventually, or don't. * When we get enough block-request responses for a given segment, we can decode the data and satisfy the segment read. * When the segment read completes, some or all of the segment data is used to satisfy the `read()` call (if the read call started or ended in the middle of a segment, we'll only use part of the data, otherwise we'll use all of it). With that background, here is the data currently on the download-status page: * "DYHB Requests": this shows every Do-You-Have-Block query sent to storage > servers and their results. Each line shows the following: * the serverid to which the request was sent * the time at which the request was sent. Note that all timestamps are relative to the start of the first `read()` call and indicated with a "`+`" sign * the time at which the response was received (if ever) * the share numbers that the server has, if any * the elapsed time taken by the request * also, each line is colored according to the serverid. This color is also used in the "Requests" section below. * "Read Events": this shows all the FileNode `read()` calls and their > overall results. Each line shows: * the range of the file that was requested (as `OFFSET:+LENGTH`). A whole-file GET will start at 0 and read the entire file. * the time at which the `read()` was made * the time at which the request finished, either because the last byte of data was returned to the `read()` caller, or because they cancelled the read by calling `stopProducing` (i.e. closing the HTTP connection) * the number of bytes returned to the caller so far * the time spent on the read, so far * the total time spent in AES decryption * total time spend paused by the client (`pauseProducing`), generally because the HTTP connection filled up, which most streaming media players will do to limit how much data they have to buffer * effective speed of the `read()`, not including paused time * "Segment Events": this shows each `get_segment()` call and its > resolution. This table is not well organized, and my post-1.8.0 work will > clean it up a lot. In its present form, it records "request" and "delivery" > events separately, indicated by the "type" column. * Each request shows the segment number being requested and the time at which the `get_segment()` call was made * Each delivery shows: * segment number * range of file data (as `OFFSET:+SIZE`) delivered * elapsed time spent doing ZFEC decoding * overall elapsed time fetching the segment * effective speed of the segment fetch * "Requests": this shows every block-request sent to the storage servers. > Each line shows: * the server to which the request was sent * which share number it is referencing * the portion of the share data being requested (as `OFFSET:+SIZE`) * the time the request was sent * the time the response was received (if ever) * the amount of data that was received (which might be less than SIZE if we tried to read off the end of the share) * the elapsed time for the request (RTT=Round-Trip-Time) Also note that each Request line is colored according to the serverid it was sent to. And all timestamps are shown relative to the start of the first read() call: for example the first DYHB message was sent at `+0.001393s` about 1.4 milliseconds after the read() call started everything off.
Author

Thanks for the documentation! We should add this into the source:docs directory, and/or I wonder if it would be too disruptive to make it be statically served up by the wui and add a hyperlink on the download status page to it.

Thanks for the documentation! We should add this into the source:docs directory, and/or I wonder if it would be too disruptive to make it be statically served up by the wui and add a hyperlink on the download status page to it.

heh, nice keyword :)

eh, I'm -0.. it'd be nice if folks could find out what the table means without searching for this ticket, but also we've got a lot of random little displays and it'd be a long process to provide (and maintain!) docs for each of them.

That said, it wouldn't be very hard to copy this into source:src/allmydata/web/ and include a static link to it on that page. Somebody (me?) would have to remember to change it once the changes I'm working on finally land. As a curious user poking around, I'd probably appreciate seeing that link.

heh, nice keyword :) eh, I'm -0.. it'd be nice if folks could find out what the table means without searching for this ticket, but also we've got a lot of random little displays and it'd be a long process to provide (and maintain!) docs for each of them. That said, it wouldn't be very hard to copy this into source:src/allmydata/web/ and include a static link to it on that page. Somebody (me?) would have to remember to change it once the changes I'm working on finally land. As a curious user poking around, I'd probably appreciate seeing that link.
Author

Copied Brian's docs from comment:380378 into source:trunk/docs/frontends/download-status.txt in changeset:36f698b6371f82e8. I'm going to change this ticket to be about the idea of linking that document into the WUI itself with a "What does this mean?" link (as per comment:380379 and comment:380380).

Copied Brian's docs from [comment:380378](/tahoe-lafs/trac/issues/1169#issuecomment-380378) into source:trunk/docs/frontends/download-status.txt in changeset:36f698b6371f82e8. I'm going to change this ticket to be about the idea of linking that document into the WUI itself with a "What does this mean?" link (as per [comment:380379](/tahoe-lafs/trac/issues/1169#issuecomment-380379) and [comment:380380](/tahoe-lafs/trac/issues/1169#issuecomment-380380)).
zooko modified the milestone from soon to undecided 2010-08-14 06:02:30 +00:00
zooko changed title from documentation for the new download status page to include documentation for the new download status page linked from the page itself 2010-08-14 06:02:30 +00:00
daira modified the milestone from undecided to 1.9.0 2010-08-21 22:02:26 +00:00
Author

Warning: we're going to integrate the new visualization tool, see #1200, which will change what is displayed on the download status page and/or will change how it is displayed. So you might want to fix this ticket to add help/documentation for the new version instead of the current version.

Warning: we're going to integrate the new visualization tool, see #1200, which will change what is displayed on the download status page and/or will change how it is displayed. So you might want to fix this ticket to add help/documentation for the new version instead of the current version.
Author

I think now that the New Visualizer has landed we need to update source:trunk/docs/frontends/download-status.rst.

I think now that the New Visualizer has landed we need to update source:trunk/docs/frontends/download-status.rst.
zooko changed title from include documentation for the new download status page linked from the page itself to update documentation for the new download status page linked from the page itself 2011-09-28 19:31:12 +00:00
zooko changed title from update documentation for the new download status page linked from the page itself to update documentation for the download status page 2011-09-28 19:44:11 +00:00

not happening in 1.9

not happening in 1.9
warner modified the milestone from 1.9.0 to 1.10.0 2011-10-28 04:48:28 +00:00

FYI the docs in source:docs/frontends/download-status.rst are correct. The timeline is an alternative way of viewing that same data, but the first link the user can get to is a big HTML table, which download-status.rst (mostly) correctly describes. It might be nice to make those docs available as a hyperlinked "about this table" page, but that's not super critical.

FYI the docs in source:docs/frontends/download-status.rst are correct. The timeline is an alternative way of viewing that same data, but the first link the user can get to is a big HTML table, which download-status.rst (mostly) correctly describes. It might be nice to make those docs available as a hyperlinked "about this table" page, but that's not super critical.
Author

Okay, this ticket is just about making sure that source:docs/frontends/download-status.rst is a correct description of the "download status" page which is the big HTML table, not the Javascript visualization. Brian, would you please review that document and fix anything that is incorrect or stale? Thank you!

Okay, this ticket is just about making sure that source:docs/frontends/download-status.rst is a correct description of the "download status" page which is the big HTML table, not the Javascript visualization. Brian, would you please review that document and fix anything that is incorrect or stale? Thank you!
Sign in to join this conversation.
No labels
c/code
c/code-dirnodes
c/code-encoding
c/code-frontend
c/code-frontend-cli
c/code-frontend-ftp-sftp
c/code-frontend-magic-folder
c/code-frontend-web
c/code-mutable
c/code-network
c/code-nodeadmin
c/code-peerselection
c/code-storage
c/contrib
c/dev-infrastructure
c/docs
c/operational
c/packaging
c/unknown
c/website
kw:2pc
kw:410
kw:9p
kw:ActivePerl
kw:AttributeError
kw:DataUnavailable
kw:DeadReferenceError
kw:DoS
kw:FileZilla
kw:GetLastError
kw:IFinishableConsumer
kw:K
kw:LeastAuthority
kw:Makefile
kw:RIStorageServer
kw:StringIO
kw:UncoordinatedWriteError
kw:about
kw:access
kw:access-control
kw:accessibility
kw:accounting
kw:accounting-crawler
kw:add-only
kw:aes
kw:aesthetics
kw:alias
kw:aliases
kw:aliens
kw:allmydata
kw:amazon
kw:ambient
kw:annotations
kw:anonymity
kw:anonymous
kw:anti-censorship
kw:api_auth_token
kw:appearance
kw:appname
kw:apport
kw:archive
kw:archlinux
kw:argparse
kw:arm
kw:assertion
kw:attachment
kw:auth
kw:authentication
kw:automation
kw:avahi
kw:availability
kw:aws
kw:azure
kw:backend
kw:backoff
kw:backup
kw:backupdb
kw:backward-compatibility
kw:bandwidth
kw:basedir
kw:bayes
kw:bbfreeze
kw:beta
kw:binaries
kw:binutils
kw:bitcoin
kw:bitrot
kw:blacklist
kw:blocker
kw:blocks-cloud-deployment
kw:blocks-cloud-merge
kw:blocks-magic-folder-merge
kw:blocks-merge
kw:blocks-raic
kw:blocks-release
kw:blog
kw:bom
kw:bonjour
kw:branch
kw:branding
kw:breadcrumbs
kw:brians-opinion-needed
kw:browser
kw:bsd
kw:build
kw:build-helpers
kw:buildbot
kw:builders
kw:buildslave
kw:buildslaves
kw:cache
kw:cap
kw:capleak
kw:captcha
kw:cast
kw:centos
kw:cffi
kw:chacha
kw:charset
kw:check
kw:checker
kw:chroot
kw:ci
kw:clean
kw:cleanup
kw:cli
kw:cloud
kw:cloud-backend
kw:cmdline
kw:code
kw:code-checks
kw:coding-standards
kw:coding-tools
kw:coding_tools
kw:collection
kw:compatibility
kw:completion
kw:compression
kw:confidentiality
kw:config
kw:configuration
kw:configuration.txt
kw:conflict
kw:connection
kw:connectivity
kw:consistency
kw:content
kw:control
kw:control.furl
kw:convergence
kw:coordination
kw:copyright
kw:corruption
kw:cors
kw:cost
kw:coverage
kw:coveralls
kw:coveralls.io
kw:cpu-watcher
kw:cpyext
kw:crash
kw:crawler
kw:crawlers
kw:create-container
kw:cruft
kw:crypto
kw:cryptography
kw:cryptography-lib
kw:cryptopp
kw:csp
kw:curl
kw:cutoff-date
kw:cycle
kw:cygwin
kw:d3
kw:daemon
kw:darcs
kw:darcsver
kw:database
kw:dataloss
kw:db
kw:dead-code
kw:deb
kw:debian
kw:debug
kw:deep-check
kw:defaults
kw:deferred
kw:delete
kw:deletion
kw:denial-of-service
kw:dependency
kw:deployment
kw:deprecation
kw:desert-island
kw:desert-island-build
kw:design
kw:design-review-needed
kw:detection
kw:dev-infrastructure
kw:devpay
kw:directory
kw:directory-page
kw:dirnode
kw:dirnodes
kw:disconnect
kw:discovery
kw:disk
kw:disk-backend
kw:distribute
kw:distutils
kw:dns
kw:do_http
kw:doc-needed
kw:docker
kw:docs
kw:docs-needed
kw:dokan
kw:dos
kw:download
kw:downloader
kw:dragonfly
kw:drop-upload
kw:duplicity
kw:dusty
kw:earth-dragon
kw:easy
kw:ec2
kw:ecdsa
kw:ed25519
kw:egg-needed
kw:eggs
kw:eliot
kw:email
kw:empty
kw:encoding
kw:endpoint
kw:enterprise
kw:enum34
kw:environment
kw:erasure
kw:erasure-coding
kw:error
kw:escaping
kw:etag
kw:etch
kw:evangelism
kw:eventual
kw:example
kw:excess-authority
kw:exec
kw:exocet
kw:expiration
kw:extensibility
kw:extension
kw:failure
kw:fedora
kw:ffp
kw:fhs
kw:figleaf
kw:file
kw:file-descriptor
kw:filename
kw:filesystem
kw:fileutil
kw:fips
kw:firewall
kw:first
kw:floatingpoint
kw:flog
kw:foolscap
kw:forward-compatibility
kw:forward-secrecy
kw:forwarding
kw:free
kw:freebsd
kw:frontend
kw:fsevents
kw:ftp
kw:ftpd
kw:full
kw:furl
kw:fuse
kw:garbage
kw:garbage-collection
kw:gateway
kw:gatherer
kw:gc
kw:gcc
kw:gentoo
kw:get
kw:git
kw:git-annex
kw:github
kw:glacier
kw:globalcaps
kw:glossary
kw:google-cloud-storage
kw:google-drive-backend
kw:gossip
kw:governance
kw:grid
kw:grid-manager
kw:gridid
kw:gridsync
kw:grsec
kw:gsoc
kw:gvfs
kw:hackfest
kw:hacktahoe
kw:hang
kw:hardlink
kw:heartbleed
kw:heisenbug
kw:help
kw:helper
kw:hint
kw:hooks
kw:how
kw:how-to
kw:howto
kw:hp
kw:hp-cloud
kw:html
kw:http
kw:https
kw:i18n
kw:i2p
kw:i2p-collab
kw:illustration
kw:image
kw:immutable
kw:impressions
kw:incentives
kw:incident
kw:init
kw:inlineCallbacks
kw:inotify
kw:install
kw:installer
kw:integration
kw:integration-test
kw:integrity
kw:interactive
kw:interface
kw:interfaces
kw:interoperability
kw:interstellar-exploration
kw:introducer
kw:introduction
kw:iphone
kw:ipkg
kw:iputil
kw:ipv6
kw:irc
kw:jail
kw:javascript
kw:joke
kw:jquery
kw:json
kw:jsui
kw:junk
kw:key-value-store
kw:kfreebsd
kw:known-issue
kw:konqueror
kw:kpreid
kw:kvm
kw:l10n
kw:lae
kw:large
kw:latency
kw:leak
kw:leasedb
kw:leases
kw:libgmp
kw:license
kw:licenss
kw:linecount
kw:link
kw:linux
kw:lit
kw:localhost
kw:location
kw:locking
kw:logging
kw:logo
kw:loopback
kw:lucid
kw:mac
kw:macintosh
kw:magic-folder
kw:manhole
kw:manifest
kw:manual-test-needed
kw:map
kw:mapupdate
kw:max_space
kw:mdmf
kw:memcheck
kw:memory
kw:memory-leak
kw:mesh
kw:metadata
kw:meter
kw:migration
kw:mime
kw:mingw
kw:minimal
kw:misc
kw:miscapture
kw:mlp
kw:mock
kw:more-info-needed
kw:mountain-lion
kw:move
kw:multi-users
kw:multiple
kw:multiuser-gateway
kw:munin
kw:music
kw:mutability
kw:mutable
kw:mystery
kw:names
kw:naming
kw:nas
kw:navigation
kw:needs-review
kw:needs-spawn
kw:netbsd
kw:network
kw:nevow
kw:new-user
kw:newcaps
kw:news
kw:news-done
kw:news-needed
kw:newsletter
kw:newurls
kw:nfc
kw:nginx
kw:nixos
kw:no-clobber
kw:node
kw:node-url
kw:notification
kw:notifyOnDisconnect
kw:nsa310
kw:nsa320
kw:nsa325
kw:numpy
kw:objects
kw:old
kw:openbsd
kw:openitp-packaging
kw:openssl
kw:openstack
kw:opensuse
kw:operation-helpers
kw:operational
kw:operations
kw:ophandle
kw:ophandles
kw:ops
kw:optimization
kw:optional
kw:options
kw:organization
kw:os
kw:os.abort
kw:ostrom
kw:osx
kw:osxfuse
kw:otf-magic-folder-objective1
kw:otf-magic-folder-objective2
kw:otf-magic-folder-objective3
kw:otf-magic-folder-objective4
kw:otf-magic-folder-objective5
kw:otf-magic-folder-objective6
kw:p2p
kw:packaging
kw:partial
kw:password
kw:path
kw:paths
kw:pause
kw:peer-selection
kw:performance
kw:permalink
kw:permissions
kw:persistence
kw:phone
kw:pickle
kw:pip
kw:pipermail
kw:pkg_resources
kw:placement
kw:planning
kw:policy
kw:port
kw:portability
kw:portal
kw:posthook
kw:pratchett
kw:preformance
kw:preservation
kw:privacy
kw:process
kw:profile
kw:profiling
kw:progress
kw:proxy
kw:publish
kw:pyOpenSSL
kw:pyasn1
kw:pycparser
kw:pycrypto
kw:pycrypto-lib
kw:pycryptopp
kw:pyfilesystem
kw:pyflakes
kw:pylint
kw:pypi
kw:pypy
kw:pysqlite
kw:python
kw:python3
kw:pythonpath
kw:pyutil
kw:pywin32
kw:quickstart
kw:quiet
kw:quotas
kw:quoting
kw:raic
kw:rainhill
kw:random
kw:random-access
kw:range
kw:raspberry-pi
kw:reactor
kw:readonly
kw:rebalancing
kw:recovery
kw:recursive
kw:redhat
kw:redirect
kw:redressing
kw:refactor
kw:referer
kw:referrer
kw:regression
kw:rekey
kw:relay
kw:release
kw:release-blocker
kw:reliability
kw:relnotes
kw:remote
kw:removable
kw:removable-disk
kw:rename
kw:renew
kw:repair
kw:replace
kw:report
kw:repository
kw:research
kw:reserved_space
kw:response-needed
kw:response-time
kw:restore
kw:retrieve
kw:retry
kw:review
kw:review-needed
kw:reviewed
kw:revocation
kw:roadmap
kw:rollback
kw:rpm
kw:rsa
kw:rss
kw:rst
kw:rsync
kw:rusty
kw:s3
kw:s3-backend
kw:s3-frontend
kw:s4
kw:same-origin
kw:sandbox
kw:scalability
kw:scaling
kw:scheduling
kw:schema
kw:scheme
kw:scp
kw:scripts
kw:sdist
kw:sdmf
kw:security
kw:self-contained
kw:server
kw:servermap
kw:servers-of-happiness
kw:service
kw:setup
kw:setup.py
kw:setup_requires
kw:setuptools
kw:setuptools_darcs
kw:sftp
kw:shared
kw:shareset
kw:shell
kw:signals
kw:simultaneous
kw:six
kw:size
kw:slackware
kw:slashes
kw:smb
kw:sneakernet
kw:snowleopard
kw:socket
kw:solaris
kw:space
kw:space-efficiency
kw:spam
kw:spec
kw:speed
kw:sqlite
kw:ssh
kw:ssh-keygen
kw:sshfs
kw:ssl
kw:stability
kw:standards
kw:start
kw:startup
kw:static
kw:static-analysis
kw:statistics
kw:stats
kw:stats_gatherer
kw:status
kw:stdeb
kw:storage
kw:streaming
kw:strports
kw:style
kw:stylesheet
kw:subprocess
kw:sumo
kw:survey
kw:svg
kw:symlink
kw:synchronous
kw:tac
kw:tahoe-*
kw:tahoe-add-alias
kw:tahoe-admin
kw:tahoe-archive
kw:tahoe-backup
kw:tahoe-check
kw:tahoe-cp
kw:tahoe-create-alias
kw:tahoe-create-introducer
kw:tahoe-debug
kw:tahoe-deep-check
kw:tahoe-deepcheck
kw:tahoe-lafs-trac-stream
kw:tahoe-list-aliases
kw:tahoe-ls
kw:tahoe-magic-folder
kw:tahoe-manifest
kw:tahoe-mkdir
kw:tahoe-mount
kw:tahoe-mv
kw:tahoe-put
kw:tahoe-restart
kw:tahoe-rm
kw:tahoe-run
kw:tahoe-start
kw:tahoe-stats
kw:tahoe-unlink
kw:tahoe-webopen
kw:tahoe.css
kw:tahoe_files
kw:tahoewapi
kw:tarball
kw:tarballs
kw:tempfile
kw:templates
kw:terminology
kw:test
kw:test-and-set
kw:test-from-egg
kw:test-needed
kw:testgrid
kw:testing
kw:tests
kw:throttling
kw:ticket999-s3-backend
kw:tiddly
kw:time
kw:timeout
kw:timing
kw:to
kw:to-be-closed-on-2011-08-01
kw:tor
kw:tor-protocol
kw:torsocks
kw:tox
kw:trac
kw:transparency
kw:travis
kw:travis-ci
kw:trial
kw:trickle
kw:trivial
kw:truckee
kw:tub
kw:tub.location
kw:twine
kw:twistd
kw:twistd.log
kw:twisted
kw:twisted-14
kw:twisted-trial
kw:twitter
kw:twn
kw:txaws
kw:type
kw:typeerror
kw:ubuntu
kw:ucwe
kw:ueb
kw:ui
kw:unclean
kw:uncoordinated-writes
kw:undeletable
kw:unfinished-business
kw:unhandled-error
kw:unhappy
kw:unicode
kw:unit
kw:unix
kw:unlink
kw:update
kw:upgrade
kw:upload
kw:upload-helper
kw:uri
kw:url
kw:usability
kw:use-case
kw:utf-8
kw:util
kw:uwsgi
kw:ux
kw:validation
kw:variables
kw:vdrive
kw:verify
kw:verlib
kw:version
kw:versioning
kw:versions
kw:video
kw:virtualbox
kw:virtualenv
kw:vista
kw:visualization
kw:visualizer
kw:vm
kw:volunteergrid2
kw:volunteers
kw:vpn
kw:wapi
kw:warners-opinion-needed
kw:warning
kw:weapi
kw:web
kw:web.port
kw:webapi
kw:webdav
kw:webdrive
kw:webport
kw:websec
kw:website
kw:websocket
kw:welcome
kw:welcome-page
kw:welcomepage
kw:wiki
kw:win32
kw:win64
kw:windows
kw:windows-related
kw:winscp
kw:workaround
kw:world-domination
kw:wrapper
kw:write-enabler
kw:wui
kw:x86
kw:x86-64
kw:xhtml
kw:xml
kw:xss
kw:zbase32
kw:zetuptoolz
kw:zfec
kw:zookos-opinion-needed
kw:zope
kw:zope.interface
p/blocker
p/critical
p/major
p/minor
p/normal
p/supercritical
p/trivial
r/cannot reproduce
r/duplicate
r/fixed
r/invalid
r/somebody else's problem
r/was already fixed
r/wontfix
r/worksforme
t/defect
t/enhancement
t/task
v/0.2.0
v/0.3.0
v/0.4.0
v/0.5.0
v/0.5.1
v/0.6.0
v/0.6.1
v/0.7.0
v/0.8.0
v/0.9.0
v/1.0.0
v/1.1.0
v/1.10.0
v/1.10.1
v/1.10.2
v/1.10a2
v/1.11.0
v/1.12.0
v/1.12.1
v/1.13.0
v/1.14.0
v/1.15.0
v/1.15.1
v/1.2.0
v/1.3.0
v/1.4.1
v/1.5.0
v/1.6.0
v/1.6.1
v/1.7.0
v/1.7.1
v/1.7β
v/1.8.0
v/1.8.1
v/1.8.2
v/1.8.3
v/1.8β
v/1.9.0
v/1.9.0-s3branch
v/1.9.0a1
v/1.9.0a2
v/1.9.0b1
v/1.9.1
v/1.9.2
v/1.9.2a1
v/cloud-branch
v/unknown
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: tahoe-lafs/trac#1169
No description provided.