Harshavardhana
ae64b7fac8
XL: Handle object layer initialization properly.
...
Initialization when disk was down the network disk
reported an incorrect error rather than errDiskNotFound.
This resulted in incorrect error handling during
prepInitStorage() stage.
Fixes #2577
8 years ago
Krishnan Parthasarathi
de67bca211
Move formatting of disks out of object layer initialization ( #2572 )
8 years ago
Harshavardhana
cbe87cb2ed
Fix fd-leak in rpcClient close it pro-actively.
8 years ago
Harshavardhana
780ccc26f7
server: Validate server arguments for duplicates. ( #2554 )
...
- Validates invalid format inputs.
- Validates duplicate entries.
- Validates sufficient amount of disks.
Partially fixes #2502
8 years ago
Harshavardhana
e1b0985b5b
rpc: Refactor authentication and login changes. ( #2543 )
...
- Cache login requests.
- Converge validating distributed setup.
8 years ago
Harshavardhana
8797952409
server: Add server command line for running in distributed mode
8 years ago
Krishnan Parthasarathi
b0f3f94163
unify single-node and distributed namespace locking ( #2401 )
8 years ago
Krishnan Parthasarathi
b7c169d71d
object layer initialization using distributed locking ( #2397 )
...
* vendorized latest minio/dsync
* wip - object layer initialization using distributed locking
8 years ago
Krishnan Parthasarathi
e55926e8cf
distribute: Make server work with multiple remote disks
...
This change initializes rpc servers associated with disks that are
local. It makes object layer initialization on demand, namely on the
first request to the object layer.
Also adds lock RPC service vendorized minio/dsync
8 years ago
Harshavardhana
040af08473
server: Startup message now prints configured ARNs. ( #2653 )
...
Fixes #2628
8 years ago
Harshavardhana
bc8f34bfe7
server/mux: Remove unused waitgroup from listenerMux. ( #2614 )
...
Change struct names to be more meaningful.
8 years ago
Harshavardhana
bccf549463
server: Move all the top level files into cmd folder. ( #2490 )
...
This change brings a change which was done for the 'mc'
package to allow for clean repo and have a cleaner
github drop in experience.
8 years ago
Anis Elleuch
5526ac13d2
Protect shutdown callbacks lists with a mutex ( #2432 )
8 years ago
Jesse Lucas
ef0a108dde
Graceful shutdown for ServerMux ( #2341 )
8 years ago
Anis Elleuch
d28fb5fe23
Add a generic registerShutdown function for graceful exit ( #2344 )
...
* Add a generic registerShutdown function for graceful exit
* Add shutdown callback test case
8 years ago
Harshavardhana
2db51e9d61
server/config: config should be updated only when we edit the credentials. ( #2345 )
8 years ago
Harshavardhana
c1d70f1f9e
server/config: Create 'certs' directory in initServerConfig(). ( #2331 )
...
certs directory was created only if config was not present, our
expectancy is we need 'certs' directory to be present all the
time making it easier to be documented.
8 years ago
Harshavardhana
8d090a20ce
server: set globalCacheSize honoring system limits for max memory. ( #2332 )
...
On unix systems it is possible to set max memory used by
running processes using 'ulimit -m' or 'syscall.RLIMIT_AS'.
A process whence exceeds this limit, kernel would pro-actively
kill such a server with OOM. To avoid this problem of defaulting
our cache size to 8GB we should look for if the current system
limits are lower and set the cache size appropriately.
8 years ago
Jesse Lucas
851d05161a
Adding return error value to checkPortAvailability to enable testing of function. Adding checkport_test.go to test checkPortAvailability. Updated server-main.go to use error value from checkPortAvailability and calls fatalIf if an error is returned. ( #2322 )
8 years ago
Anis Elleuch
b0b919a1d6
Server http and https on the same port using a customized server ( #2247 )
8 years ago
Harshavardhana
0bd6b67ca5
server: Sort ips based on their last octet value. ( #2198 )
8 years ago
Harshavardhana
3b69b4ada4
server: Change server startup message. ( #2195 )
...
This change brings in the new agreed startup message
for the server.
Adds additional links point to Minio SDKs as well.
8 years ago
Harshavardhana
bdff0848ed
server: Implement --ignore-disks for ignoring disks from healing. ( #2158 )
...
By default server heals/creates missing directories and re-populates
`format.json`, in some scenarios when disk is down for maintainenance
it would be beneficial for users to ignore such disks rather than
mistakenly using `root` partition.
Fixes #2128
8 years ago
Harshavardhana
c0c8a8430e
XL/PutObject: Add single putObject and multipart caching. ( #2115 )
...
- Additionally adds test cases as well for object cache.
- Adds auto-expiry with expiration and cleanup time interval.
Fixes #2080
Fixes #2091
8 years ago
Harshavardhana
d2557bb538
XL: GetObject caching implemented for XL. ( #2017 )
...
The object cache implementation is XL cache, which defaults
to 8GB worth of read cache. Currently GetObject() transparently
writes to this cache upon first client read and then subsequently
serves reads from the same cache.
Currently expiration is not implemented.
8 years ago
Krishna Srinivas
3f2b4d9dc2
Show "https" in the "minio server export/" output if certificates are available. ( #2065 )
...
fixes #2036
8 years ago
Harshavardhana
796fe165c7
server: Minor command line doc change for XL. ( #2022 )
9 years ago
Harshavardhana
936a916e78
server: Add connection rate limiter for server. ( #1977 )
9 years ago
Harshavardhana
de21126f7e
XL: Re-align the code again.
9 years ago
Bala FA
116b5607d7
server: fix to have readable timeout value ( #1823 )
9 years ago
karthic rao
1947ae198e
Adding read nad write timeout for unresponsive client connectinos ( #1809 )
9 years ago
Andreas Linz
f5dfa895a5
Exit with error code if minio server fails to start ( #1704 )
...
This commit replaces the call to `errorIf` with `fatalIf`, so that the
minio server exits with an non-zero exit status if something fails, e.g.
the port was already openend by another process.
9 years ago
Harshavardhana
9472299308
logging: Log only for unhandled errors, remove all the debug logging. ( #1652 )
...
This patch brings in the removal of debug logging altogether, instead
we bring in the functionality of being able to trace the errors properly
pointing back to the origination of the problem.
To enable tracing you need to enable "MINIO_TRACE" set to "1" or "true"
environment variable which would print back traces whenever there is an
error which is unhandled or at the handler layer.
By default this tracing is turned off and only user level logging is
provided.
9 years ago
Harshavardhana
49141eb3e4
http: Remove minhttp package and use standard Golang http. ( #1587 )
...
The functionality provided by minhttp will be implemented
cleanly through our own APIs. Since we are not going to
send SIGUSR2 and manage configuration in that manner, it
doesn't make sense to use minhttp.
Fixes #1586
9 years ago
Harshavardhana
a20ccb1e83
server: Print proper endpoint, along with https if configured. ( #1514 )
...
Fixes #1492
9 years ago
Harshavardhana
7ae40eb1bb
minhttp: Remove probe usage, move to golang error. ( #1459 )
...
Fixes #1454
9 years ago
Harshavardhana
4e34e03dd4
xl/fs: Split object layer into interface. ( #1415 )
9 years ago
Harshavardhana
5f80edf232
routers: Fix a crash while initializing network fs. ( #1382 )
...
Crash happens when 'minio server filename' a file name is
provided instead of a directory on command line argument.
```
panic: runtime error: slice bounds out of range
goroutine 1 [running]:
panic(0x5eb460, 0xc82000e0b0)
/usr/local/opt/go/libexec/src/runtime/panic.go:464 +0x3e6
main.splitNetPath(0x7fff5fbff9bd, 0x7, 0x0, 0x0, 0x0, 0x0)
/Users/harsha/mygo/src/github.com/minio/minio/network-fs.go:49 +0xb7
main.newNetworkFS(0x7fff5fbff9bd, 0x7, 0x0, 0x0, 0x0, 0x0)
/Users/harsha/mygo/src/github.com/minio/minio/network-fs.go:90 +0x20a
main.configureServerHandler(0xc82024e1c8, 0x5, 0xc8200640e0, 0x1, 0x1, 0x0, 0x0)
/Users/harsha/mygo/src/github.com/minio/minio/routers.go:43 +0x6ce
main.configureServer(0xc82024e1c8, 0x5, 0xc8200640e0, 0x1, 0x1, 0x5)
/Users/harsha/mygo/src/github.com/minio/minio/server-main.go:86 +0x67
```
9 years ago
Harshavardhana
a98a7fb1ad
Implement XL layer - preliminary work.
9 years ago
Harshavardhana
6bc17a3aea
server: Attempt to increase max open files. ( #1328 )
9 years ago
Harshavardhana
30b0b4deba
storage/server/client: Enable storage server, enable client storage.
9 years ago
Krishna Srinivas
3c48537f20
refactor: refactor code to separate fs into object-layer and fs layer. ( #1305 )
9 years ago
Harshavardhana
fbd02d530d
web: Change /rpc to /webrpc
9 years ago
Harshavardhana
0479d4976b
objectAPI: Fix object API interface, remove unnecessary structs.
...
ObjectAPI changes.
```
ListObjects(bucket, prefix, marker, delimiter string, maxKeys int) (ListObjectsInfo, *probe.Error)
ListMultipartUploads(bucket, objectPrefix, keyMarker, uploadIDMarker, delimiter string, maxUploads int) (ListMultipartsInfo, *probe.Error)
ListObjectParts(bucket, object, uploadID string, partNumberMarker, maxParts int) (ListPartsInfo, *probe.Error)
CompleteMultipartUpload(bucket string, object string, uploadID string, parts []completePart) (ObjectInfo, *probe.Error)
```
9 years ago
Harshavardhana
484ba91b08
config: Migrate to the new version. Remove backend details.
...
Migrate to new config format v4.
```
{
"version": "4",
"credential": {
"accessKey": "WLGDGYAQYIGI833EV05A",
"secretKey": "BYvgJM101sHngl2uzjXS/OBF/aMxAN06JrJ3qJlF"
},
"region": "us-east-1",
"logger": {
"console": {
"enable": true,
"level": "fatal"
},
"file": {
"enable": false,
"fileName": "",
"level": "error"
},
"syslog": {
"enable": false,
"address": "",
"level": "debug"
}
}
}
```
This patch also updates [minio cli spec](./minio.md)
9 years ago
Harshavardhana
efc80343e3
fs: Break fs package to top-level and introduce ObjectAPI interface.
...
ObjectAPI interface brings in changes needed for XL ObjectAPI layer.
The new interface for any ObjectAPI layer is as below
```
// ObjectAPI interface.
type ObjectAPI interface {
// Bucket resource API.
DeleteBucket(bucket string) *probe.Error
ListBuckets() ([]BucketInfo, *probe.Error)
MakeBucket(bucket string) *probe.Error
GetBucketInfo(bucket string) (BucketInfo, *probe.Error)
// Bucket query API.
ListObjects(bucket, prefix, marker, delimiter string, maxKeys int) (ListObjectsResult, *probe.Error)
ListMultipartUploads(bucket string, resources BucketMultipartResourcesMetadata) (BucketMultipartResourcesMetadata, *probe.Error)
// Object resource API.
GetObject(bucket, object string, startOffset int64) (io.ReadCloser, *probe.Error)
GetObjectInfo(bucket, object string) (ObjectInfo, *probe.Error)
PutObject(bucket string, object string, size int64, data io.Reader, metadata map[string]string) (ObjectInfo, *probe.Error)
DeleteObject(bucket, object string) *probe.Error
// Object query API.
NewMultipartUpload(bucket, object string) (string, *probe.Error)
PutObjectPart(bucket, object, uploadID string, partID int, size int64, data io.Reader, md5Hex string) (string, *probe.Error)
ListObjectParts(bucket, object string, resources ObjectResourcesMetadata) (ObjectResourcesMetadata, *probe.Error)
CompleteMultipartUpload(bucket string, object string, uploadID string, parts []CompletePart) (ObjectInfo, *probe.Error)
AbortMultipartUpload(bucket, object, uploadID string) *probe.Error
}
```
9 years ago
Harshavardhana
3538c9f598
minio: Server upon start displays a message if update is available.
...
This code also handles to turn itself off when network is not
available and if request fails. Also prints only when the update
is available.
9 years ago
Harshavardhana
36267eb6e2
server: Print a message if not backends are configured.
9 years ago
Harshavardhana
aaf97ea02c
config/main: Re-write config files - add to new config v3
...
- New config format.
```
{
"version": "3",
"address": ":9000",
"backend": {
"type": "fs",
"disk": "/path"
},
"credential": {
"accessKey": "WLGDGYAQYIGI833EV05A",
"secretKey": "BYvgJM101sHngl2uzjXS/OBF/aMxAN06JrJ3qJlF"
},
"region": "us-east-1",
"logger": {
"file": {
"enable": false,
"fileName": "",
"level": "error"
},
"syslog": {
"enable": false,
"address": "",
"level": "debug"
},
"console": {
"enable": true,
"level": "fatal"
}
}
}
```
New command lines in lieu of supporting XL.
Minio initialize filesystem backend.
~~~
$ minio init fs <path>
~~~
Minio initialize XL backend.
~~~
$ minio init xl <url1>...<url16>
~~~
For 'fs' backend it starts the server.
~~~
$ minio server
~~~
For 'xl' backend it waits for servers to join.
~~~
$ minio server
... [PROGRESS BAR] of servers connecting
~~~
Now on other servers execute 'join' and they connect.
~~~
....
minio join <url1> -- from <url2> && minio server
minio join <url1> -- from <url3> && minio server
...
...
minio join <url1> -- from <url16> && minio server
~~~
9 years ago