Harshavardhana
bbb89b5776
Add multi-thread protection and also allow atomic file creates, rename upon Close()
10 years ago
Harshavardhana
c2c7bdf0cd
Cleanup nimble http
10 years ago
Harshavardhana
b029d0a5f0
Avoid config reload all the time, reload is manually triggerred from outside
10 years ago
Harshavardhana
8b94c53345
Fix issues with multipart upload
10 years ago
Harshavardhana
474954022e
Add modified grace library from facebookgo, rename it as nimble
10 years ago
Harshavardhana
1d64e4b6c1
Add Donut rpc service for sending changes to configuration files
10 years ago
Harshavardhana
10b082144e
Add updateConfig code to load config changes if possible for every function
10 years ago
Harshavardhana
ba0a5ed416
Add sighup, sigusr2 into trapping code, to trap signals for reloading configuration.
...
Need to still figure out a way of graceful restarts - gave facebookgo/httpdown a shot,
but it is not suitable.
10 years ago
Harshavardhana
4a27ab0e58
Fix another deadlock inside CreateObjectPart() code, premature return without Unlocking()
...
Also this patch changes the cache key element to be interface{} type not string.
10 years ago
Harshavardhana
75788c7a1d
Fix go installation check on amazon instance
10 years ago
Harshavardhana
7f0c14f2b7
Add basic controller code, initiating json rpc connection getting list of disks and memstats for now.
10 years ago
Harshavardhana
a3ccb9d405
Rename stuttered service names and make them appropriate
10 years ago
Harshavardhana
e66a84242a
Add disk detection for Linux, add new RPC service GetDiskInfoService(), remove dummy HelloService()
10 years ago
Harshavardhana
bab4a47525
Move to container/list datastructure from map[string][]byte
10 years ago
Harshavardhana
aa67a19e99
Implement new CPU detection using cpuid, cpuidex plan9 instructions from klauspost/cpuid project, remove C code
10 years ago
Harshavardhana
0a827305ad
Implement metadata cache, metadata cache is used by top level donut right now. Rename trove as data cache
...
We should use it internally everywhere.
10 years ago
Harshavardhana
14844f48dd
Make donut do everything as an atomic operation, this avoids all the deadlocks and races
10 years ago
Harshavardhana
30fc14e703
Restructure codebase move crypto, checksum to top-level, move ``split`` into donut, move crypto/keys into api/auth
10 years ago
Harshavardhana
8a4e7bcdcf
Add full API tests, move storage/donut to donut, add disk tests as well
10 years ago
Harshavardhana
7c37e9d06a
Make donut fully integrated back into API handlers
10 years ago
Harshavardhana
12bde7df30
Add simple Ticket Master which pro-actively sends messages on proceedChannel
...
Handlers are going to wait on proceedChannel, this the initial step towards
providing priority for different set of API operations
10 years ago
Harshavardhana
5cfb05465e
Add cache, donut tests separately - fix behavior differences
...
Remove priority queue, implement it using a simpler channels
10 years ago
Harshavardhana
ebe61d99d9
Use cache Append() for saving objects in memory, GetObject() caches un-cached entries while reading
10 years ago
Harshavardhana
bce93c1b3a
Integrate cache with donut, add tests
10 years ago
Harshavardhana
0533abf6a8
Make priority queue lambda function return error over a channel
10 years ago
Harshavardhana
38a6ce36e5
Remove slow AppendUniq code, rolling through over a slice is in-efficient
...
Remove it and use map instead
10 years ago
Harshavardhana
84810162f5
Add simple Version and GetSysInfo services
10 years ago
Harshavardhana
14ec42d646
Add initial implementation of priority queue, uses container/heap
10 years ago
Harshavardhana
eb5aa19dfa
Remove custom Config, will use quick Config instead for user access keys
10 years ago
Harshavardhana
701c3e5242
Add new RPC helpers wrapping over regular rpc packages, add middleware chaining ability
10 years ago
Harshavardhana
4addf7a996
Restructure API handlers, add JSON RPC simple HelloService right now.
10 years ago
Harshavardhana
335c7827eb
More donut, cache, api cleanup
10 years ago
Harshavardhana
dc0df3dc0e
Breakaway from driver model, move cache into donut
10 years ago
Harshavardhana
72572d6c71
Remove some api server code bringing in new cleanup
10 years ago
Harshavardhana
c2031ca066
Add server and control command
10 years ago
Frederick F. Kautz IV
cfbc169034
Fixing API definitions
10 years ago
Harshavardhana
8f61d6b6be
Move memory code out, add it as layer on top of existing donut code
...
Just like how http.Handlers can be overlayed on top of each other
with each implementing ServeHTTP().
drivers.Driver can be overlayed on top of each other in similar manner
which would implement the drivers.Driver interface.
API <----> cache <----> donut <----> donut(format)
10 years ago
Harshavardhana
ab6e16bb41
Add dummy driver for community to submit new drivers
10 years ago
Harshavardhana
12de98fb62
Rename memory driver as cache
10 years ago
Harshavardhana
2571342451
Filesystem goes the high road *again*
10 years ago
Harshavardhana
f74d6138da
IsValidBucket() is sufficient we don't need to verify for "."
10 years ago
Harshavardhana
3109909355
Handle couple of cases of OOM conditions, move caching to GetObject() rather than PutObject()
10 years ago
Harshavardhana
d07d0c670a
Return back proper errors in writeObjectData(), rename few functions
10 years ago
Harshavardhana
10c807f233
Put object on successful write returns full metadata, to avoid subsequent GetObjectMetadata() calls in driver
10 years ago
Harshavardhana
6921328b93
Avoid frivolous GetObjectMetadata() calls at driver level, return back all the information in donut ListObjects()
10 years ago
Harshavardhana
d8f7896a43
Expand http server struct to store more values
10 years ago
Harshavardhana
42c0287943
Use errorChannels only for services not for drivers, reduce them to use simple functions
10 years ago
Harshavardhana
91e5f648cb
Move to Set() not Append() due to large memory reference copy
10 years ago
Harshavardhana
ac4d8fe478
Add free() method for proxyReader to aggressively de-allocate Read data, to handle certain out of memory conditions
...
There are still some more out there
10 years ago
Harshavardhana
05f8654e3d
Add Append() method to trove cache for appending data to an existing key
...
This largely avoids a large buffer copy which would accumulate inside proxyReader{}
This patch also implements "initialize()" function to init and populate data
on all the existing buckets, avoiding the redundant ListBuckets() invoked by
every API call.
10 years ago