forked from cerc-io/plugeth
node: switching prometheus flock location to tsdb (#19376)
* node: switching prometheus flock location to tsdb * rookie mistake
This commit is contained in:
parent
d5cae48bae
commit
a8dd1f93c6
@ -34,7 +34,7 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/log"
|
"github.com/ethereum/go-ethereum/log"
|
||||||
"github.com/ethereum/go-ethereum/p2p"
|
"github.com/ethereum/go-ethereum/p2p"
|
||||||
"github.com/ethereum/go-ethereum/rpc"
|
"github.com/ethereum/go-ethereum/rpc"
|
||||||
"github.com/prometheus/prometheus/util/flock"
|
"github.com/prometheus/tsdb/fileutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Node is a container on which services can be registered.
|
// Node is a container on which services can be registered.
|
||||||
@ -44,7 +44,7 @@ type Node struct {
|
|||||||
accman *accounts.Manager
|
accman *accounts.Manager
|
||||||
|
|
||||||
ephemeralKeystore string // if non-empty, the key directory that will be removed by Stop
|
ephemeralKeystore string // if non-empty, the key directory that will be removed by Stop
|
||||||
instanceDirLock flock.Releaser // prevents concurrent use of instance directory
|
instanceDirLock fileutil.Releaser // prevents concurrent use of instance directory
|
||||||
|
|
||||||
serverConfig p2p.Config
|
serverConfig p2p.Config
|
||||||
server *p2p.Server // Currently running P2P networking layer
|
server *p2p.Server // Currently running P2P networking layer
|
||||||
@ -267,7 +267,7 @@ func (n *Node) openDataDir() error {
|
|||||||
}
|
}
|
||||||
// Lock the instance directory to prevent concurrent use by another instance as well as
|
// Lock the instance directory to prevent concurrent use by another instance as well as
|
||||||
// accidental use of the instance directory as a database.
|
// accidental use of the instance directory as a database.
|
||||||
release, _, err := flock.New(filepath.Join(instdir, "LOCK"))
|
release, _, err := fileutil.Flock(filepath.Join(instdir, "LOCK"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return convertFileLockError(err)
|
return convertFileLockError(err)
|
||||||
}
|
}
|
||||||
|
87
vendor/github.com/prometheus/prometheus/NOTICE
generated
vendored
87
vendor/github.com/prometheus/prometheus/NOTICE
generated
vendored
@ -1,87 +0,0 @@
|
|||||||
The Prometheus systems and service monitoring server
|
|
||||||
Copyright 2012-2015 The Prometheus Authors
|
|
||||||
|
|
||||||
This product includes software developed at
|
|
||||||
SoundCloud Ltd. (http://soundcloud.com/).
|
|
||||||
|
|
||||||
|
|
||||||
The following components are included in this product:
|
|
||||||
|
|
||||||
Bootstrap
|
|
||||||
http://getbootstrap.com
|
|
||||||
Copyright 2011-2014 Twitter, Inc.
|
|
||||||
Licensed under the MIT License
|
|
||||||
|
|
||||||
bootstrap3-typeahead.js
|
|
||||||
https://github.com/bassjobsen/Bootstrap-3-Typeahead
|
|
||||||
Original written by @mdo and @fat
|
|
||||||
Copyright 2014 Bass Jobsen @bassjobsen
|
|
||||||
Licensed under the Apache License, Version 2.0
|
|
||||||
|
|
||||||
fuzzy
|
|
||||||
https://github.com/mattyork/fuzzy
|
|
||||||
Original written by @mattyork
|
|
||||||
Copyright 2012 Matt York
|
|
||||||
Licensed under the MIT License
|
|
||||||
|
|
||||||
bootstrap-datetimepicker.js
|
|
||||||
https://github.com/Eonasdan/bootstrap-datetimepicker
|
|
||||||
Copyright 2015 Jonathan Peterson (@Eonasdan)
|
|
||||||
Licensed under the MIT License
|
|
||||||
|
|
||||||
moment.js
|
|
||||||
https://github.com/moment/moment/
|
|
||||||
Copyright JS Foundation and other contributors
|
|
||||||
Licensed under the MIT License
|
|
||||||
|
|
||||||
Rickshaw
|
|
||||||
https://github.com/shutterstock/rickshaw
|
|
||||||
Copyright 2011-2014 by Shutterstock Images, LLC
|
|
||||||
See https://github.com/shutterstock/rickshaw/blob/master/LICENSE for license details
|
|
||||||
|
|
||||||
mustache.js
|
|
||||||
https://github.com/janl/mustache.js
|
|
||||||
Copyright 2009 Chris Wanstrath (Ruby)
|
|
||||||
Copyright 2010-2014 Jan Lehnardt (JavaScript)
|
|
||||||
Copyright 2010-2015 The mustache.js community
|
|
||||||
Licensed under the MIT License
|
|
||||||
|
|
||||||
jQuery
|
|
||||||
https://jquery.org
|
|
||||||
Copyright jQuery Foundation and other contributors
|
|
||||||
Licensed under the MIT License
|
|
||||||
|
|
||||||
Go support for Protocol Buffers - Google's data interchange format
|
|
||||||
http://github.com/golang/protobuf/
|
|
||||||
Copyright 2010 The Go Authors
|
|
||||||
See source code for license details.
|
|
||||||
|
|
||||||
Go support for leveled logs, analogous to
|
|
||||||
https://code.google.com/p/google-glog/
|
|
||||||
Copyright 2013 Google Inc.
|
|
||||||
Licensed under the Apache License, Version 2.0
|
|
||||||
|
|
||||||
Support for streaming Protocol Buffer messages for the Go language (golang).
|
|
||||||
https://github.com/matttproud/golang_protobuf_extensions
|
|
||||||
Copyright 2013 Matt T. Proud
|
|
||||||
Licensed under the Apache License, Version 2.0
|
|
||||||
|
|
||||||
DNS library in Go
|
|
||||||
http://miek.nl/posts/2014/Aug/16/go-dns-package/
|
|
||||||
Copyright 2009 The Go Authors, 2011 Miek Gieben
|
|
||||||
See https://github.com/miekg/dns/blob/master/LICENSE for license details.
|
|
||||||
|
|
||||||
LevelDB key/value database in Go
|
|
||||||
https://github.com/syndtr/goleveldb
|
|
||||||
Copyright 2012 Suryandaru Triandana
|
|
||||||
See https://github.com/syndtr/goleveldb/blob/master/LICENSE for license details.
|
|
||||||
|
|
||||||
gosnappy - a fork of code.google.com/p/snappy-go
|
|
||||||
https://github.com/syndtr/gosnappy
|
|
||||||
Copyright 2011 The Snappy-Go Authors
|
|
||||||
See https://github.com/syndtr/gosnappy/blob/master/LICENSE for license details.
|
|
||||||
|
|
||||||
go-zookeeper - Native ZooKeeper client for Go
|
|
||||||
https://github.com/samuel/go-zookeeper
|
|
||||||
Copyright (c) 2013, Samuel Stauffer <samuel@descolada.com>
|
|
||||||
See https://github.com/samuel/go-zookeeper/blob/master/LICENSE for license details.
|
|
22
vendor/github.com/prometheus/tsdb/fileutil/dir_unix.go
generated
vendored
Normal file
22
vendor/github.com/prometheus/tsdb/fileutil/dir_unix.go
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright 2016 The etcd Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// +build !windows
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
|
// OpenDir opens a directory for syncing.
|
||||||
|
func OpenDir(path string) (*os.File, error) { return os.Open(path) }
|
46
vendor/github.com/prometheus/tsdb/fileutil/dir_windows.go
generated
vendored
Normal file
46
vendor/github.com/prometheus/tsdb/fileutil/dir_windows.go
generated
vendored
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
// Copyright 2016 The etcd Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// +build windows
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
// OpenDir opens a directory in windows with write access for syncing.
|
||||||
|
func OpenDir(path string) (*os.File, error) {
|
||||||
|
fd, err := openDir(path)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return os.NewFile(uintptr(fd), path), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func openDir(path string) (fd syscall.Handle, err error) {
|
||||||
|
if len(path) == 0 {
|
||||||
|
return syscall.InvalidHandle, syscall.ERROR_FILE_NOT_FOUND
|
||||||
|
}
|
||||||
|
pathp, err := syscall.UTF16PtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return syscall.InvalidHandle, err
|
||||||
|
}
|
||||||
|
access := uint32(syscall.GENERIC_READ | syscall.GENERIC_WRITE)
|
||||||
|
sharemode := uint32(syscall.FILE_SHARE_READ | syscall.FILE_SHARE_WRITE)
|
||||||
|
createmode := uint32(syscall.OPEN_EXISTING)
|
||||||
|
fl := uint32(syscall.FILE_FLAG_BACKUP_SEMANTICS)
|
||||||
|
return syscall.CreateFile(pathp, access, sharemode, nil, createmode, fl, 0)
|
||||||
|
}
|
149
vendor/github.com/prometheus/tsdb/fileutil/fileutil.go
generated
vendored
Normal file
149
vendor/github.com/prometheus/tsdb/fileutil/fileutil.go
generated
vendored
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
// Copyright 2018 The Prometheus Authors
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// Package fileutil provides utility methods used when dealing with the filesystem in tsdb.
|
||||||
|
// It is largely copied from github.com/coreos/etcd/pkg/fileutil to avoid the
|
||||||
|
// dependency chain it brings with it.
|
||||||
|
// Please check github.com/coreos/etcd for licensing information.
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"sort"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CopyDirs copies all directories, subdirectories and files recursively including the empty folders.
|
||||||
|
// Source and destination must be full paths.
|
||||||
|
func CopyDirs(src, dest string) error {
|
||||||
|
if err := os.MkdirAll(dest, 0777); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
files, err := readDirs(src)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, f := range files {
|
||||||
|
dp := filepath.Join(dest, f)
|
||||||
|
sp := filepath.Join(src, f)
|
||||||
|
|
||||||
|
stat, err := os.Stat(sp)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Empty directories are also created.
|
||||||
|
if stat.IsDir() {
|
||||||
|
if err := os.MkdirAll(dp, 0777); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := copyFile(sp, dp); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func copyFile(src, dest string) error {
|
||||||
|
data, err := ioutil.ReadFile(src)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = ioutil.WriteFile(dest, data, 0644)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// readDirs reads the source directory recursively and
|
||||||
|
// returns relative paths to all files and empty directories.
|
||||||
|
func readDirs(src string) ([]string, error) {
|
||||||
|
var files []string
|
||||||
|
|
||||||
|
err := filepath.Walk(src, func(path string, f os.FileInfo, err error) error {
|
||||||
|
relativePath := strings.TrimPrefix(path, src)
|
||||||
|
if len(relativePath) > 0 {
|
||||||
|
files = append(files, relativePath)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return files, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReadDir returns the filenames in the given directory in sorted order.
|
||||||
|
func ReadDir(dirpath string) ([]string, error) {
|
||||||
|
dir, err := os.Open(dirpath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer dir.Close()
|
||||||
|
names, err := dir.Readdirnames(-1)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
sort.Strings(names)
|
||||||
|
return names, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rename safely renames a file.
|
||||||
|
func Rename(from, to string) error {
|
||||||
|
if err := os.Rename(from, to); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Directory was renamed; sync parent dir to persist rename.
|
||||||
|
pdir, err := OpenDir(filepath.Dir(to))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = Fsync(pdir); err != nil {
|
||||||
|
pdir.Close()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return pdir.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replace moves a file or directory to a new location and deletes any previous data.
|
||||||
|
// It is not atomic.
|
||||||
|
func Replace(from, to string) error {
|
||||||
|
if err := os.RemoveAll(to); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := os.Rename(from, to); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Directory was renamed; sync parent dir to persist rename.
|
||||||
|
pdir, err := OpenDir(filepath.Dir(to))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = Fsync(pdir); err != nil {
|
||||||
|
pdir.Close()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return pdir.Close()
|
||||||
|
}
|
@ -11,12 +11,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
// Package flock provides portable file locking. It is essentially ripped out
|
package fileutil
|
||||||
// from the code of github.com/syndtr/goleveldb. Strange enough that the
|
|
||||||
// standard library does not provide this functionality. Once this package has
|
|
||||||
// proven to work as expected, we should probably turn it into a separate
|
|
||||||
// general purpose package for humanity.
|
|
||||||
package flock
|
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
@ -28,19 +23,19 @@ type Releaser interface {
|
|||||||
Release() error
|
Release() error
|
||||||
}
|
}
|
||||||
|
|
||||||
// New locks the file with the provided name. If the file does not exist, it is
|
// Flock locks the file with the provided name. If the file does not exist, it is
|
||||||
// created. The returned Releaser is used to release the lock. existed is true
|
// created. The returned Releaser is used to release the lock. existed is true
|
||||||
// if the file to lock already existed. A non-nil error is returned if the
|
// if the file to lock already existed. A non-nil error is returned if the
|
||||||
// locking has failed. Neither this function nor the returned Releaser is
|
// locking has failed. Neither this function nor the returned Releaser is
|
||||||
// goroutine-safe.
|
// goroutine-safe.
|
||||||
func New(fileName string) (r Releaser, existed bool, err error) {
|
func Flock(fileName string) (r Releaser, existed bool, err error) {
|
||||||
if err = os.MkdirAll(filepath.Dir(fileName), 0755); err != nil {
|
if err = os.MkdirAll(filepath.Dir(fileName), 0755); err != nil {
|
||||||
return
|
return nil, false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = os.Stat(fileName)
|
_, err = os.Stat(fileName)
|
||||||
existed = err == nil
|
existed = err == nil
|
||||||
|
|
||||||
r, err = newLock(fileName)
|
r, err = newLock(fileName)
|
||||||
return
|
return r, existed, err
|
||||||
}
|
}
|
@ -11,7 +11,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
package flock
|
package fileutil
|
||||||
|
|
||||||
import "os"
|
import "os"
|
||||||
|
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
// +build solaris
|
// +build solaris
|
||||||
|
|
||||||
package flock
|
package fileutil
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
// +build darwin dragonfly freebsd linux netbsd openbsd
|
// +build darwin dragonfly freebsd linux netbsd openbsd
|
||||||
|
|
||||||
package flock
|
package fileutil
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
@ -11,7 +11,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
package flock
|
package fileutil
|
||||||
|
|
||||||
import "syscall"
|
import "syscall"
|
||||||
|
|
61
vendor/github.com/prometheus/tsdb/fileutil/mmap.go
generated
vendored
Normal file
61
vendor/github.com/prometheus/tsdb/fileutil/mmap.go
generated
vendored
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
// Copyright 2018 The Prometheus Authors
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
type MmapFile struct {
|
||||||
|
f *os.File
|
||||||
|
b []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
func OpenMmapFile(path string) (*MmapFile, error) {
|
||||||
|
f, err := os.Open(path)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "try lock file")
|
||||||
|
}
|
||||||
|
info, err := f.Stat()
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "stat")
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := mmap(f, int(info.Size()))
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "mmap")
|
||||||
|
}
|
||||||
|
|
||||||
|
return &MmapFile{f: f, b: b}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *MmapFile) Close() error {
|
||||||
|
err0 := munmap(f.b)
|
||||||
|
err1 := f.f.Close()
|
||||||
|
|
||||||
|
if err0 != nil {
|
||||||
|
return err0
|
||||||
|
}
|
||||||
|
return err1
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *MmapFile) File() *os.File {
|
||||||
|
return f.f
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *MmapFile) Bytes() []byte {
|
||||||
|
return f.b
|
||||||
|
}
|
18
vendor/github.com/prometheus/tsdb/fileutil/mmap_386.go
generated
vendored
Normal file
18
vendor/github.com/prometheus/tsdb/fileutil/mmap_386.go
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
// Copyright 2018 The Prometheus Authors
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// +build windows
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
const maxMapSize = 0x7FFFFFFF // 2GB
|
18
vendor/github.com/prometheus/tsdb/fileutil/mmap_amd64.go
generated
vendored
Normal file
18
vendor/github.com/prometheus/tsdb/fileutil/mmap_amd64.go
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
// Copyright 2018 The Prometheus Authors
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// +build windows
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
const maxMapSize = 0xFFFFFFFFFFFF // 256TB
|
30
vendor/github.com/prometheus/tsdb/fileutil/mmap_unix.go
generated
vendored
Normal file
30
vendor/github.com/prometheus/tsdb/fileutil/mmap_unix.go
generated
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
// Copyright 2017 The Prometheus Authors
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// +build !windows,!plan9
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
func mmap(f *os.File, length int) ([]byte, error) {
|
||||||
|
return unix.Mmap(int(f.Fd()), 0, length, unix.PROT_READ, unix.MAP_SHARED)
|
||||||
|
}
|
||||||
|
|
||||||
|
func munmap(b []byte) (err error) {
|
||||||
|
return unix.Munmap(b)
|
||||||
|
}
|
46
vendor/github.com/prometheus/tsdb/fileutil/mmap_windows.go
generated
vendored
Normal file
46
vendor/github.com/prometheus/tsdb/fileutil/mmap_windows.go
generated
vendored
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
// Copyright 2017 The Prometheus Authors
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
func mmap(f *os.File, size int) ([]byte, error) {
|
||||||
|
low, high := uint32(size), uint32(size>>32)
|
||||||
|
h, errno := syscall.CreateFileMapping(syscall.Handle(f.Fd()), nil, syscall.PAGE_READONLY, high, low, nil)
|
||||||
|
if h == 0 {
|
||||||
|
return nil, os.NewSyscallError("CreateFileMapping", errno)
|
||||||
|
}
|
||||||
|
|
||||||
|
addr, errno := syscall.MapViewOfFile(h, syscall.FILE_MAP_READ, 0, 0, uintptr(size))
|
||||||
|
if addr == 0 {
|
||||||
|
return nil, os.NewSyscallError("MapViewOfFile", errno)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := syscall.CloseHandle(syscall.Handle(h)); err != nil {
|
||||||
|
return nil, os.NewSyscallError("CloseHandle", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return (*[maxMapSize]byte)(unsafe.Pointer(addr))[:size], nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func munmap(b []byte) error {
|
||||||
|
if err := syscall.UnmapViewOfFile((uintptr)(unsafe.Pointer(&b[0]))); err != nil {
|
||||||
|
return os.NewSyscallError("UnmapViewOfFile", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
54
vendor/github.com/prometheus/tsdb/fileutil/preallocate.go
generated
vendored
Normal file
54
vendor/github.com/prometheus/tsdb/fileutil/preallocate.go
generated
vendored
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
// Copyright 2015 The etcd Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Preallocate tries to allocate the space for given
|
||||||
|
// file. This operation is only supported on linux by a
|
||||||
|
// few filesystems (btrfs, ext4, etc.).
|
||||||
|
// If the operation is unsupported, no error will be returned.
|
||||||
|
// Otherwise, the error encountered will be returned.
|
||||||
|
func Preallocate(f *os.File, sizeInBytes int64, extendFile bool) error {
|
||||||
|
if sizeInBytes == 0 {
|
||||||
|
// fallocate will return EINVAL if length is 0; skip
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if extendFile {
|
||||||
|
return preallocExtend(f, sizeInBytes)
|
||||||
|
}
|
||||||
|
return preallocFixed(f, sizeInBytes)
|
||||||
|
}
|
||||||
|
|
||||||
|
func preallocExtendTrunc(f *os.File, sizeInBytes int64) error {
|
||||||
|
curOff, err := f.Seek(0, io.SeekCurrent)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
size, err := f.Seek(sizeInBytes, io.SeekEnd)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if _, err = f.Seek(curOff, io.SeekStart); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if sizeInBytes > size {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return f.Truncate(sizeInBytes)
|
||||||
|
}
|
41
vendor/github.com/prometheus/tsdb/fileutil/preallocate_darwin.go
generated
vendored
Normal file
41
vendor/github.com/prometheus/tsdb/fileutil/preallocate_darwin.go
generated
vendored
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
// Copyright 2015 The etcd Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
func preallocExtend(f *os.File, sizeInBytes int64) error {
|
||||||
|
if err := preallocFixed(f, sizeInBytes); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return preallocExtendTrunc(f, sizeInBytes)
|
||||||
|
}
|
||||||
|
|
||||||
|
func preallocFixed(f *os.File, sizeInBytes int64) error {
|
||||||
|
fstore := &syscall.Fstore_t{
|
||||||
|
Flags: syscall.F_ALLOCATEALL,
|
||||||
|
Posmode: syscall.F_PEOFPOSMODE,
|
||||||
|
Length: sizeInBytes}
|
||||||
|
p := unsafe.Pointer(fstore)
|
||||||
|
_, _, errno := syscall.Syscall(syscall.SYS_FCNTL, f.Fd(), uintptr(syscall.F_PREALLOCATE), uintptr(p))
|
||||||
|
if errno == 0 || errno == syscall.ENOTSUP {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return errno
|
||||||
|
}
|
47
vendor/github.com/prometheus/tsdb/fileutil/preallocate_linux.go
generated
vendored
Normal file
47
vendor/github.com/prometheus/tsdb/fileutil/preallocate_linux.go
generated
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// Copyright 2015 The etcd Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
func preallocExtend(f *os.File, sizeInBytes int64) error {
|
||||||
|
// use mode = 0 to change size
|
||||||
|
err := syscall.Fallocate(int(f.Fd()), 0, 0, sizeInBytes)
|
||||||
|
if err != nil {
|
||||||
|
errno, ok := err.(syscall.Errno)
|
||||||
|
// not supported; fallback
|
||||||
|
// fallocate EINTRs frequently in some environments; fallback
|
||||||
|
if ok && (errno == syscall.ENOTSUP || errno == syscall.EINTR) {
|
||||||
|
return preallocExtendTrunc(f, sizeInBytes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func preallocFixed(f *os.File, sizeInBytes int64) error {
|
||||||
|
// use mode = 1 to keep size; see FALLOC_FL_KEEP_SIZE
|
||||||
|
err := syscall.Fallocate(int(f.Fd()), 1, 0, sizeInBytes)
|
||||||
|
if err != nil {
|
||||||
|
errno, ok := err.(syscall.Errno)
|
||||||
|
// treat not supported as nil error
|
||||||
|
if ok && errno == syscall.ENOTSUP {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
25
vendor/github.com/prometheus/tsdb/fileutil/preallocate_other.go
generated
vendored
Normal file
25
vendor/github.com/prometheus/tsdb/fileutil/preallocate_other.go
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// Copyright 2015 The etcd Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// +build !linux,!darwin
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
|
func preallocExtend(f *os.File, sizeInBytes int64) error {
|
||||||
|
return preallocExtendTrunc(f, sizeInBytes)
|
||||||
|
}
|
||||||
|
|
||||||
|
func preallocFixed(f *os.File, sizeInBytes int64) error { return nil }
|
29
vendor/github.com/prometheus/tsdb/fileutil/sync.go
generated
vendored
Normal file
29
vendor/github.com/prometheus/tsdb/fileutil/sync.go
generated
vendored
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
// Copyright 2016 The etcd Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// +build !linux,!darwin
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
|
// Fsync is a wrapper around file.Sync(). Special handling is needed on darwin platform.
|
||||||
|
func Fsync(f *os.File) error {
|
||||||
|
return f.Sync()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fdatasync is a wrapper around file.Sync(). Special handling is needed on linux platform.
|
||||||
|
func Fdatasync(f *os.File) error {
|
||||||
|
return f.Sync()
|
||||||
|
}
|
40
vendor/github.com/prometheus/tsdb/fileutil/sync_darwin.go
generated
vendored
Normal file
40
vendor/github.com/prometheus/tsdb/fileutil/sync_darwin.go
generated
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
// Copyright 2016 The etcd Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// +build darwin
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Fsync on HFS/OSX flushes the data on to the physical drive but the drive
|
||||||
|
// may not write it to the persistent media for quite sometime and it may be
|
||||||
|
// written in out-of-order sequence. Using F_FULLFSYNC ensures that the
|
||||||
|
// physical drive's buffer will also get flushed to the media.
|
||||||
|
func Fsync(f *os.File) error {
|
||||||
|
_, _, errno := syscall.Syscall(syscall.SYS_FCNTL, f.Fd(), uintptr(syscall.F_FULLFSYNC), uintptr(0))
|
||||||
|
if errno == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return errno
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fdatasync on darwin platform invokes fcntl(F_FULLFSYNC) for actual persistence
|
||||||
|
// on physical drive media.
|
||||||
|
func Fdatasync(f *os.File) error {
|
||||||
|
return Fsync(f)
|
||||||
|
}
|
34
vendor/github.com/prometheus/tsdb/fileutil/sync_linux.go
generated
vendored
Normal file
34
vendor/github.com/prometheus/tsdb/fileutil/sync_linux.go
generated
vendored
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
// Copyright 2016 The etcd Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// +build linux
|
||||||
|
|
||||||
|
package fileutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Fsync is a wrapper around file.Sync(). Special handling is needed on darwin platform.
|
||||||
|
func Fsync(f *os.File) error {
|
||||||
|
return f.Sync()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fdatasync is similar to fsync(), but does not flush modified metadata
|
||||||
|
// unless that metadata is needed in order to allow a subsequent data retrieval
|
||||||
|
// to be correctly handled.
|
||||||
|
func Fdatasync(f *os.File) error {
|
||||||
|
return syscall.Fdatasync(int(f.Fd()))
|
||||||
|
}
|
8
vendor/vendor.json
vendored
8
vendor/vendor.json
vendored
@ -400,10 +400,10 @@
|
|||||||
"revisionTime": "2016-01-10T10:55:54Z"
|
"revisionTime": "2016-01-10T10:55:54Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"checksumSHA1": "WbbxCn2jUYIL5viqLo0BKXEdPrQ=",
|
"checksumSHA1": "hOxzP9VnSzMLzqDtuW5Bhjn2DWU=",
|
||||||
"path": "github.com/prometheus/prometheus/util/flock",
|
"path": "github.com/prometheus/tsdb/fileutil",
|
||||||
"revision": "3101606756c53221ed58ba94ecba6b26adf89dcc",
|
"revision": "4f204dcbc15056cdd047b06ac6111becda5c2915",
|
||||||
"revisionTime": "2017-08-14T17:01:13Z"
|
"revisionTime": "2019-04-02T12:16:29Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"checksumSHA1": "lU41NL1TEDtsrr0yUdp3SMB4Y9o=",
|
"checksumSHA1": "lU41NL1TEDtsrr0yUdp3SMB4Y9o=",
|
||||||
|
Loading…
Reference in New Issue
Block a user