Commit Graph

3584 Commits

Author SHA1 Message Date
Rafael Weinstein
2fb9ba5b5e Update README.md 2017-06-22 04:25:50 -07:00
Rafael Weinstein
fe0fc3ad86 Introduce SetEditor, Nestable Editors (#3557) 2017-06-21 15:22:04 -07:00
cmasone-attic
b2874662e2 Basic doc for running NBS on AWS (#3558)
Fixes #3546
2017-06-21 15:19:46 -07:00
cmasone-attic
bfe45c489e NBS: Fix usage of manifestCache (#3556)
There were races in both manifest implementations, between cache usage
in ParseIfExists() and Update(). It was possible for Update() calls to
occur between the time that ParseIfExists() read the manifest data and
the time it updated the cache. This led to newer manifest content
getting clobbered in the cache by out-of-date manifest content.

The new approach takes caching out of the hands of the manifest impls,
instead wrapping a shared caching layer around the outside.

Fixes #3551
2017-06-21 13:10:39 -07:00
cmasone-attic
9b9a272c6f Add fsTableCache tests missed in previous patch (#3552) 2017-06-20 13:42:37 -07:00
Rafael Weinstein
763a87aa60 Reland advance to fix (#3555) 2017-06-20 12:45:51 -07:00
Rafael Weinstein
0c3af1c1c5 Revert "sequenceChunker.advanceTo avoid resuming over items it already consumed (#3553)" (#3554) 2017-06-20 12:39:58 -07:00
Rafael Weinstein
d2cc508729 sequenceChunker.advanceTo avoid resuming over items it already consumed (#3553) 2017-06-20 12:34:47 -07:00
Rafael Weinstein
2035657441 remove dead code (#3549) 2017-06-16 15:54:08 -07:00
Rafael Weinstein
70d9564b18 SequenceCursor.advanceTo shouldnt step out of parent sequence (#3548) 2017-06-16 09:56:47 -07:00
Rafael Weinstein
e0f68b08bd Minor fixes to MapEditor (#3547) 2017-06-15 17:28:49 -07:00
Rafael Weinstein
1796d2f865 Streaming p tree updates + Map Editor (#3545) 2017-06-15 15:49:04 -07:00
Rafael Weinstein
7251afe285 dont clone cursors in sequence chunker (#3541) 2017-06-14 11:59:18 -07:00
Rafael Weinstein
70f145e3de trivial sequence chunking refactor (#3540) 2017-06-13 19:21:00 -07:00
Rafael Weinstein
d675e4d8f4 Chunking V2 (#3521) 2017-06-13 10:48:03 -07:00
Aaron Boodman
f10f5b5282 Add [Must][Un]MarshalOpt - which provides more control over how values are marshaled and unmarshaled (#3539)
Toward #2376
2017-06-10 18:39:07 -07:00
cmasone-attic
185bd54b34 Put root in httpChunkStore /getRefs query string (#3538)
Fixes #3491
2017-06-09 15:57:12 -07:00
Rafael Weinstein
daf97e4cc4 Remove some uses of Backoff (#3533) 2017-06-09 13:10:40 -07:00
cmasone-attic
753aacb8f7 NBS: Fix race between Rebase() and Commit() (#3532) 2017-06-09 12:31:55 -07:00
Rafael Weinstein
3ff92950d8 Revert removal of |last| from Commit() (#3531) 2017-06-09 11:20:45 -07:00
cmasone-attic
0fd37ba20d Add chunks.Factory::CreateStoreFromCache() (#3529)
Add a method to chunks.Factory that allows the caller to
signal that it's willing to try to make forward progress
using an out-of-date ChunkStore. This allows AWSStoreFactory
and LocalStoreFactory to vend NBS instances without hammering
persistent storage every time.

Towards #3491
2017-06-09 08:52:22 -07:00
Rafael Weinstein
214054986b Enforce clearer concurrency semantics of ValueStore (#3527) 2017-06-08 11:40:22 -07:00
Rafael Weinstein
3863e91c17 Remove WalkDifferentStructs (#3528) 2017-06-07 18:56:14 -07:00
Rafael Weinstein
81769cd7b3 move flushing of uncommitted ptree nodes out of EncodeValue (#3524) 2017-06-07 11:21:56 -07:00
Rafael Weinstein
3df9e116d6 narrow semantics of value_store value_cache (#3523) 2017-06-06 15:05:54 -07:00
cmasone-attic
18cc73b6ac NBS: Add more tests for table cache usage in s3TablePersister (#3509)
These tests verify that tables get cached on Perist(), and that
tableReaders vended by s3TablePersister correctly use the cache.
2017-06-06 13:40:28 -07:00
Rafael Weinstein
ec10155e0c Add Open/CommitLatency (#3522) 2017-06-06 13:14:52 -07:00
Aaron Boodman
ae44fb2c94 Add two small features to marshaling: (#3518)
1. In MarshalType() allow Noms collections without element types, e.g.:

type Foo struct {
  A types.List
}

marshal.MustMarshalType(Foo{}) => struct Foo { A List<Value> }

2. There were cases where we would fail to marshal structs containing
non-comparable Go types (e.g. slices). Fix those using DeepEqual().
2017-06-05 14:42:13 -07:00
Erik Arvidsson
f8b8a67097 Marshal: Add a way to define the struct name (#3517)
This is done by implementing StructNameMarshaler interface. For example

```go
type TestStruct struct {
  ...
}
func (ts TestStruct) MarshalNomsStructName() string {
  return "HelloWorld"
}
```

Fixes #2972
2017-06-02 17:07:49 -07:00
Erik Arvidsson
ea447a737a Marshal: Add support for embedded structs (#3513)
The main difference is that we now have to keep track of the index path
into the embedded structs.

Towards #2376
2017-06-02 10:40:57 -07:00
Aaron Boodman
f186bb9e29 Add exit.Reset helper to reset to default value (#3512) 2017-06-01 12:13:31 -07:00
Rafael Weinstein
cd2db5fbab make maxOpenFiles configurable for AWSFactory (#3511) 2017-05-31 15:28:40 -07:00
cmasone-attic
93b82a9952 NBS: fs table cache should tolerate its own temp files (#3510)
If one of these got left behind in a cache directory, e.g.
due to a crash, subsequent runs should tolerate and remove it
instead of panicing
2017-05-31 15:20:42 -07:00
cmasone-attic
e014edfa66 NBS: s3TablePersister caches tables locally on write (#3507) 2017-05-31 12:10:37 -07:00
phritz
b98562656a make comment more accurate 2017-05-30 10:10:57 -10:00
cmasone-attic
961970f155 NBS: add cache-on-write behavior for manifests (#3503)
Fixes #3494
2017-05-30 13:06:12 -07:00
phritz
546cdbdf49 added comment about caching 2017-05-30 10:03:05 -10:00
Rafael Weinstein
22732c11ec parallelize reads between tables (#3502) 2017-05-28 13:18:20 -07:00
Eric Halpern
d4f6d566f3 Modify roll.py to handle multiple --incl directories (#3500)
This makes it possible to include/exclude multiple directories when rolling src into a vendor directory.

For example, to roll the `cmd` and `go` directories from github.com/attic-labs/noms
into your vendor directory, you could run the following:

```
cd $MY_REPO_HOME
$NOMS/tools/roll.py --incl cmd --incl go https://github.com/attic-labs/noms
```

This patch also strips '.git' if it's present on the end of the repo url.
2017-05-26 12:27:56 -07:00
Rafael Weinstein
c5e72525f2 Dataset caches HeadValue rather than HeadRef (#3499) 2017-05-25 11:51:20 -07:00
Rafael Weinstein
862217f0ff add manifest latencies to Stats.String() (#3498) 2017-05-23 10:17:50 -07:00
cmasone-attic
286555560c Add Stats() to Database (#3497)
This just returns interface{}, allowing underlying ChunkStore
implementations to return whatever kind of stats struct they want.

Fixes #3493
2017-05-23 09:55:01 -07:00
cmasone-attic
3201a5c9e5 Add Read/WriteManifestLatency stats (#3495)
Fixes #3494
2017-05-22 16:59:32 -07:00
cmasone-attic
46cf38eaae Simplify Pull() (#3490)
In an NBS world, bulk 'has' checks are waaaay cheaper than they used
to be. In light of this, we can toss out the complex logic we were
using in Pull() -- which basically existed for no reason other than to
avoid doing 'has' checks. Now, the code basically just descends down a
tree of chunks breadth-first, using HasMany() at each level to figure
out which chunks are not yet in the sink all at once, and GetMany() to
pull them from the source in bulk.

Fixes #3182, Towards #3384
2017-05-22 15:50:12 -07:00
Dan Willhite
323edf618a Add hasExtra return value to IsValueSubtypeOf() (#3483)
* Add hasExtra return value to IsValueSubtypeOf()

* cr changes

* cr changes
2017-05-19 16:06:03 -07:00
Rafael Weinstein
c44f9bdfea maxTable nit-picking (#3489) 2017-05-18 17:12:11 -07:00
Dan Willhite
dafd868471 Fix intermittent test bug TestStreamingSet2 and TestStreamingMap2 (#3487) 2017-05-18 16:58:27 -07:00
cmasone-attic
5ae0b5063f NBS: Avoid concurrent (in-process) conjoins to a given store (#3484)
Previously, every NomsBlockStore instance decided when to conjoin
tables (and which to conjoin) entirely on its own, which led to A LOT
of concurrent conjoining that would mostly be wasted effort, as one
instance would win the race and then all the rest would drop their
work on the floor, rebase, and continue. This patch introduces a
'conjoiner' that is either process-global, or owned by one of the NBS
factory objects you can create. Now, NBS instances vended by a given
factory call this single conjoiner during Commit(), asking it to
perform a conjoin if necessary. If a conjoin is already underway, the
conjoiner blocks the caller until it's finished and then
returns. Whether the conjoin was triggered at the caller's request, or
the caller got to opportunistically piggyback on a conjoin already in
progress, the caller must rebase after Conjoin() returns.

Fixes #3422
2017-05-18 16:40:28 -07:00
Rafael Weinstein
6eac51c708 map mutation test (#3488) 2017-05-18 16:37:23 -07:00
Rafael Weinstein
0570d0c565 add noms show --stats (#3486) 2017-05-18 15:24:22 -07:00