This PR adds disk based edge caching support for minio server.
Cache settings can be configured in config.json to take list of disk drives,
cache expiry in days and file patterns to exclude from cache or via environment
variables MINIO_CACHE_DRIVES, MINIO_CACHE_EXCLUDE and MINIO_CACHE_EXPIRY
Design assumes that Atime support is enabled and the list of cache drives is
fixed.
- Objects are cached on both GET and PUT/POST operations.
- Expiry is used as hint to evict older entries from cache, or if 80% of cache
capacity is filled.
- When object storage backend is down, GET, LIST and HEAD operations fetch
object seamlessly from cache.
Current Limitations
- Bucket policies are not cached, so anonymous operations are not supported in
offline mode.
- Objects are distributed using deterministic hashing among list of cache
drives specified.If one or more drives go offline, or cache drive
configuration is altered - performance could degrade to linear lookup.
Fixes#4026
This is a trival fix to support server level WORM. The feature comes
with an environment variable `MINIO_WORM`.
Usage:
```
$ export MINIO_WORM=on
$ minio server endpoint
```
Object deletion should not be possible if quorum is not
available. This PR updates deleteObject() to check for
quorum errors before proceeding with object deletion.
Fixes#5535
- "yarn eslint" will throw the error if there are any formatting issues
- "yarn format" will format the js file based on the project's
prettier configuration.
- removes backend/{fs,xl} files.
- removes FreeBSD doc since we already have FreeNAS doc.
- removes sets/ directory which is redundant with
large-bucket directory.
- removes browser/ directory which attempts
to explain about browser RPC calls, since
its an internal API we do not need to document it.
- Center text on Alert component appearing on top
- Change "Upload" to "Continue" on New UX Abort Upload modal
- Fix issue where long bucket names were overflowing instead of
continuing on the next line
- Fix word wrap issue similar to the last one for the alerts that appear
on top
- Help fix the cluttering issue on #5690 as the right margin has been
increased in alerts
Fixes#5689, #5691 and #5695
* format js files using prettier
Used the following command to format the files
prettier --write "browser/app/js/**/*.js"
* fix failing unit tests in browser
* adding local pagination to bucket list
When there are more than 5000 buckets, browser ui
becomes unresponsive since react needs to create
5000 elements which takes browser resources.
So we show only 100 buckets for the first time,
and load more buckets when the user is scrolling down.
* move inline styles to less file
This commit removes the argument in the fetchBuckets function that was
introduced in #5580. Due to the adjustment made in #5584, we no longer
need to differentiate between where the function has been called from.
All routes '/', '/:bucket/', '/:bucket/*' render the same
component. Instead we could just have a single route like following which
combines all the above routes
'/:bucket?/*'
bucket is optional here, so it can cover '/'
This commit adds the bucket delete and bucket policy functionalities
to the browser.
Part of rewriting the browser code to follow best practices and
guidelines of React (issues #5409 and #5410)
The backend code has been modified by @krishnasrinivas to prevent
issue #4498 from occuring. The relevant changes have been made to the
code according to the latest commit and the unit tests in the backend.
This commit also addresses issue #5449.
* conditionally render main action buttons
- Make bucket action will be available only for loggedIn users
- File upload button will be avaialble for loggedIn users
and non-loggedIn users if the prefix is writable
* select the bucket and prefix from the url
When the url contains bucket and prefix, it will be selected
by default instead of the first bucket from the list.
* show BucketSearch only for LoggedIn users
* allow non-LoggedIn users to access public bucket
* removed unused Router imports
* fix test case failures in BucketList.test.js
* remove dupicate minioBrowserPrefix from url
since history is already initialized with minioBrowserPrefix,
no need to use it in push or replace
* remove unused match from App component
* remove unused minioBrowserPrefix imports
* refactor browser links and about modal
Moved about modal to separate component and added unit tests.
* refactor change password modal component
* added unit tests for ChangePasswordModal
* fix logout function in browser dropdown
* remove older unused BrowserDropdown component
* remove unused variables from BrowserDropdown component
* show BrowserDropdown and StorageInfo only for LoggedIn users
Non-loggedIn users will see a 'Login' button
- upgraded react from v16.2.0
- upgraded react-router to v4.2.0 and re-writen the routes
- using prettier to format the code
- added jest to unit test components/reducers/selectors
This provides a skeleton to start of with. Only basic unit test
cases are added, remaining needs to be added.
In terms of functionality, it provides login, listing and searching
buckets. Remaining functionalities will be added in upcoming patches.
- Changed webpack.config.js and webpack.production.config.js
according to the migration guidelines
- Updated packages that had unmet peer dependencies after the
webpack update
Fixes#5398
Since go1.8 GOPATH is not required to set prior, as
it defaults to "${HOME}/go" we only need to check if
go tool detected GOPATH correctly. If yes then we
proceed if not we fail.
fixes a regression introduced in 0e4431725c
when removing a previously applied notification configuration.
event.ParseConfig() was stricter in terms of handling notification
configuration, we need to allow when notification configuration is
sent empty, this is the way to remove notification configuration.