Commit Graph

2316 Commits

Author SHA1 Message Date
Brian Warner
96e6c78c7a webish: show nickname too 2008-02-05 18:26:05 -07:00
Brian Warner
d146ef7e09 webish: add extra introducer data (version, timestamps) to Welcome page 2008-02-05 17:32:27 -07:00
Brian Warner
a7ea39e626 test_introducer.py: increase timeouts on poll() calls 2008-02-05 16:37:58 -07:00
Brian Warner
8ae6795e91 bundle foolscap-0.2.4 instead of 0.2.3 2008-02-05 15:27:41 -07:00
Brian Warner
7c7375a5ad bump foolscap dependency to 0.2.4, since we now use log.err 2008-02-05 15:27:14 -07:00
Brian Warner
78e26b0879 docs/configuration.txt: wrap to 80 cols 2008-02-05 14:35:12 -07:00
Brian Warner
d35b2f304f docs/configuration.txt: document nickname, no_storage, readonly_storage 2008-02-05 14:33:29 -07:00
Brian Warner
d98fde952c introducer: remove remaining bits of 'push-to-myself' flags. The uploading/downloading node is no longer special. 2008-02-05 14:16:01 -07:00
Brian Warner
80b72d919a introducer: remove PeerCountObserver, tests are managing with purely poll-for-connected approachers 2008-02-05 14:15:49 -07:00
Brian Warner
daecca6589 big introducer refactoring: separate publish+subscribe. Addresses #271. 2008-02-05 13:05:13 -07:00
Brian Warner
3a5ba35215 PollMixin: add timeout= argument, rewrite to avoid tail-recursion problems 2008-02-04 20:35:07 -07:00
robk-tahoe
f4cbd5ca34 windows: include latest windown build, winfuse and tray.exe 2008-02-04 18:12:50 -07:00
robk-tahoe
f5a803303f stats: fix service issues
having moved inititalisation into startService to handle tub init cleanly,
I neglected the up-call to startService, which wound up not starting the
load_monitor.

also I changed the 'running' attribute to 'started' since 'running' is
the name used internally by MultiService itself.
2008-02-01 18:57:31 -07:00
robk-tahoe
3641b7924b munin stats: don't suppress series with no current data
having changed tahoe-stats to not report data series if there was no recent
data recorded for a node, I wound up making it hide the data series.  this
change causes it to report all data series for which stats exist in the
'config' phase, so that they show up, but only report actual data if the
stats are recent, so that they show up as missing if the node is not
reporting stats currently
2008-02-01 18:44:57 -07:00
nejucomo
67660232f1 tahoe_fuse: system test: Verify file contents can be properly read. 2008-01-30 03:14:48 -07:00
nejucomo
28552e5967 tahoe_fuse: system test: Populate a testdir with files and empty children directories, then test the fuse interface for proper listings and size metadata. 2008-01-30 02:59:43 -07:00
nejucomo
7240021d1c tahoe_fuse: system test: Create a separate directory for each test and pass the cap and local path to each test. Add two basic sanity tests for empty directories. 2008-01-30 02:57:54 -07:00
nejucomo
9ecfbc62cd tahoe_fuse: system test: Replace repeated attempts at webapi calls with single calls, abstract webapi calls into a single function. 2008-01-30 02:56:25 -07:00
nejucomo
0dbdb0f871 tahoe_fuse: system test: Remove some needless comments. 2008-01-30 02:55:53 -07:00
nejucomo
5e94c07045 tahoe_fuse: system test: Move test summary to end of output. 2008-01-30 02:46:24 -07:00
nejucomo
ab3d399ac7 tahoe_fuse: system tests: Update comments. 2008-01-30 02:45:54 -07:00
nejucomo
98e92e2a48 tahoe_fuse: system test: Make output checking into non-fatal warnings, and make patterns looser. 2008-01-30 01:10:53 -07:00
nejucomo
7caec120b3 docs: webapi: Add concise shorthand for options, input, output, and statuses to the operation descriptions...
I'm not convinced if this is the best way to do this, but I find it
handy to have a conscise "quick reference" for the webapi operations
which summarize all related I/O.

Another possibility is to reject this patch, but create a separate
"webapi_quickref.html" with a concise table.
2008-01-30 01:27:42 -07:00
nejucomo
3aceb6be1e tahoe_fuse.py: system test: Distinguish between TestFailures and unexpected exceptions during testing (and fix a typo). 2008-01-28 22:42:28 -07:00
nejucomo
7421d99f18 tahoe_fuse.py: system test: setup: lexically sort test names, create a TestFailure class, implement an empty directory listing test. 2008-01-28 22:40:47 -07:00
nejucomo
597ab62d12 tahoe_fuse.py: system test: setup: fixed a bug in which the mointpoint was not created before mounting. 2008-01-28 22:39:13 -07:00
nejucomo
7fe264d280 tahoe_fuse.py: system test: Many changes to framework...
The flow control has been de-obfuscated a bit.

Some output changes.

The test framework has quite a few race conditions, but it does a reasonable job of setting up and cleaning up.
2008-01-28 22:27:19 -07:00
nejucomo
b4c566efca Individual tests run after all the setup layers are in place. 2008-01-28 22:25:11 -07:00
Brian Warner
769446b667 client.py: hush pyflakes 2008-02-01 20:28:15 -07:00
Brian Warner
054f25581c client.py: touch BASEDIR/no_storage to not publish a storage server. Addresses #271 2008-02-01 20:07:08 -07:00
Brian Warner
a01f9ce9cc introducer: allow nodes to refrain from publishing themselves, by passing furl=None. This would be useful for clients who do not run storage servers. 2008-02-01 19:48:38 -07:00
Zooko O'Whielacronx
6363ab5727 docs: architecture.txt: some edits with Amber 2008-02-01 12:39:06 -07:00
Zooko O'Whielacronx
1d1628e525 rename storage_index_chk_hash() to storage_index_hash() and add TODO about how our use of it now includes keys that are not CHKs 2008-02-01 12:27:37 -07:00
Zooko O'Whielacronx
a2e1f13fd8 docs: update docs/about.html with Amber 2008-02-01 11:39:23 -07:00
robk-tahoe
e5487bbe21 stats: added IStatsProducer interface, fixed stats provider startup
this adds an interface, IStatsProducer, defining the get_stats() method
which the stats provider calls upon and registered producer, and made the
register_producer() method check that interface is implemented.

also refine the startup logic, so that the stats provider doesn't try and
connect out to the stats gatherer until after the node declares the tub
'ready'.  this is to address an issue whereby providers would attach to
the gatherer without providing a valid furl, and hence the gatherer would
be unable to determine the tubid of the connected client, leading to lost
samples.
2008-01-31 21:10:15 -07:00
robk-tahoe
b80cfeb186 munin stats: suppress output of data more that 5min old
if a node fails to report stats, the natural thing to do in re munin is to 
supress the data for that data series.  the previous tahoe-stats would output
whatever data was present in the stats_gatherer's stats.pickle, regardless of
how old.

this change means that if the gatherer hasn't received data within the last
5 min, then no data is reported to munin for that node.
2008-01-31 21:04:23 -07:00
robk-tahoe
e910a64e7d munin stats: change truncated nodeid to 4 char (not 8) 2008-01-31 19:21:17 -07:00
robk-tahoe
0700ccabaa stats_gatherer: reject "<unauth>" as a tubid, to avoid screwing up the data. 2008-01-31 19:11:31 -07:00
Brian Warner
19b76cfadd Makefile: add 'upload-tarballs' target, using a foolscap-based file-transfer tool 2008-01-31 19:00:40 -07:00
Brian Warner
670933ecee storage: clean up use of si_s vs si_dir, add test for BadWriterEnabler message, add some logging 2008-01-31 17:48:48 -07:00
Zooko O'Whielacronx
7bf21082f7 remove unused import (thanks, pyflakes) 2008-01-31 17:00:59 -07:00
Zooko O'Whielacronx
79c439d026 storage: make two levels of share directories so as not to exceed certain filesystems's limitations on directory size
The filesystem which gets my vote for most undeservedly popular is ext3, and it has a hard limit of 32,000 entries in a directory.  Many other filesystems (even ones that I like more than I like ext3) have either hard limits or bad performance consequences or weird edge cases when you get too many entries in a single directory.

This patch makes it so that there is a layer of intermediate directories between the "shares" directory and the actual storage-index directory (the one whose name contains the entire storage index (z-base-32 encoded) and which contains one or more share files named by their share number).

The intermediate directories are named by the first 14 bits of the storage index, which means there are at most 16384 of them.  (This also means that the intermediate directory names are not a leading prefix of the storage-index directory names -- to do that would have required us to have intermediate directories limited to either 1024 (2-char), which is too few, or 32768 (3-chars of a full 5 bits each), which would overrun ext3's funny hard limit of 32,000.))

This closes #150, and please see the "convertshares.py" script attached to #150 to convert your old tahoe-0.7.0 storage/shares directory into a new tahoe-0.8.0 storage/shares directory.
2008-01-31 16:26:28 -07:00
Brian Warner
bf25a041f3 tarballs: stick with setup.py's sdist command, which gives us bz2/gz/zip but not rz/7z/lrz. Closes #298. 2008-01-31 13:52:48 -07:00
Brian Warner
6b414074a9 offloaded.py: fix logging a bit 2008-01-31 13:45:01 -07:00
Brian Warner
4a363f0281 add 'tarballs' target, to generate compressed source tarballs 2008-01-30 20:45:14 -07:00
robk-tahoe
7b9f3207d0 stats: add a simple stats gathering system
We have a desire to collect runtime statistics from multiple nodes primarily
for server monitoring purposes.   This implements a simple implementation of
such a system, as a skeleton to build more sophistication upon.

Each client now looks for a 'stats_gatherer.furl' config file.  If it has
been configured to use a stats gatherer, then it instantiates internally
a StatsProvider.  This is a central place for code which wishes to offer
stats up for monitoring to report them to, either by calling 
stats_provider.count('stat.name', value) to increment a counter, or by
registering a class as a stats producer with sp.register_producer(obj).

The StatsProvider connects to the StatsGatherer server and provides its
provider upon startup.  The StatsGatherer is then responsible for polling
the attached providers periodically to retrieve the data provided.
The provider queries each registered producer when the gatherer queries
the provider.  Both the internal 'counters' and the queried 'stats' are
then reported to the gatherer.

This provides a simple gatherer app, (c.f. make stats-gatherer-run)
which prints its furl and listens for incoming connections.  Once a
minute, the gatherer polls all connected providers, and writes the
retrieved data into a pickle file.

Also included is a munin plugin which knows how to read the gatherer's
stats.pickle and output data munin can interpret.  this plugin, 
tahoe-stats.py can be symlinked as multiple different names within
munin's 'plugins' directory, and inspects argv to determine which
data to display, doing a lookup in a table within that file.
It looks in the environment for 'statsfile' to determine the path to
the gatherer's stats.pickle.  An example plugins-conf.d file is
provided.
2008-01-30 20:11:07 -07:00
Brian Warner
22071c00e0 upload: oops, fix breakage after removing upload_file/upload_data/etc 2008-01-30 19:41:43 -07:00
Brian Warner
909d848071 remove upload.upload_(data,filename,filehandle) convenience functions 2008-01-30 19:03:19 -07:00
Brian Warner
44ff4c6605 upload: Data should use convergence by default 2008-01-30 19:02:56 -07:00
Brian Warner
81eeafc574 upload-helper: avoid duplicate uploads: check the grid to see if the file already exists 2008-01-30 18:49:02 -07:00