commit
4482aef905
|
@ -268,7 +268,7 @@ static void dnodeGetEmail(char* filepath) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosTRead(fd, (void *)tsEmail, TSDB_FQDN_LEN) < 0) {
|
if (taosRead(fd, (void *)tsEmail, TSDB_FQDN_LEN) < 0) {
|
||||||
dError("failed to read %d bytes from file %s since %s", TSDB_FQDN_LEN, filepath, strerror(errno));
|
dError("failed to read %d bytes from file %s since %s", TSDB_FQDN_LEN, filepath, strerror(errno));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,8 +72,6 @@ extern "C" {
|
||||||
#include <sys/utsname.h>
|
#include <sys/utsname.h>
|
||||||
|
|
||||||
#define TAOS_OS_FUNC_FILE_SENDIFLE
|
#define TAOS_OS_FUNC_FILE_SENDIFLE
|
||||||
#define taosFSendFile(outfile, infile, offset, count) taosFSendFileImp(outfile, infile, offset, size)
|
|
||||||
#define taosTSendFile(dfd, sfd, offset, size) taosTSendFileImp(dfd, sfd, offset, size)
|
|
||||||
|
|
||||||
#define TAOS_OS_FUNC_SEMPHONE
|
#define TAOS_OS_FUNC_SEMPHONE
|
||||||
#define tsem_t dispatch_semaphore_t
|
#define tsem_t dispatch_semaphore_t
|
||||||
|
|
|
@ -20,46 +20,32 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ssize_t taosTReadImp(int fd, void *buf, size_t count);
|
#define tread(fd, buf, count) read(fd, buf, count)
|
||||||
ssize_t taosTWriteImp(int fd, void *buf, size_t count);
|
#define twrite(fd, buf, count) write(fd, buf, count)
|
||||||
|
#define tlseek(fd, offset, whence) lseek(fd, offset, whence)
|
||||||
|
#define tclose(fd) \
|
||||||
|
{ \
|
||||||
|
if (FD_VALID(fd)) { \
|
||||||
|
close(fd); \
|
||||||
|
fd = FD_INITIALIZER; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
ssize_t taosTSendFileImp(int dfd, int sfd, off_t *offset, size_t size);
|
int64_t taosRead(int32_t fd, void *buf, int64_t count);
|
||||||
int taosFSendFileImp(FILE* out_file, FILE* in_file, int64_t* offset, int32_t count);
|
int64_t taosWrite(int32_t fd, void *buf, int64_t count);
|
||||||
|
int64_t taosLSeek(int32_t fd, int64_t offset, int32_t whence);
|
||||||
|
int32_t taosRenameFile(char *fullPath, char *suffix, char delimiter, char **dstPath);
|
||||||
|
|
||||||
#ifndef TAOS_OS_FUNC_FILE_SENDIFLE
|
|
||||||
#define taosTSendFile(dfd, sfd, offset, size) taosTSendFileImp(dfd, sfd, offset, size)
|
|
||||||
#define taosFSendFile(outfile, infile, offset, count) taosTSendFileImp(fileno(outfile), fileno(infile), offset, size)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define taosTRead(fd, buf, count) taosTReadImp(fd, buf, count)
|
// TAOS_OS_FUNC_FILE_SENDIFLE
|
||||||
#define taosTWrite(fd, buf, count) taosTWriteImp(fd, buf, count)
|
int64_t taosSendFile(int32_t dfd, int32_t sfd, int64_t *offset, int64_t size);
|
||||||
#define taosLSeek(fd, offset, whence) lseek(fd, offset, whence)
|
int64_t taosFSendFile(FILE *outfile, FILE *infile, int64_t *offset, int64_t size);
|
||||||
|
|
||||||
#ifdef TAOS_RANDOM_FILE_FAIL
|
|
||||||
void taosSetRandomFileFailFactor(int factor);
|
|
||||||
void taosSetRandomFileFailOutput(const char *path);
|
|
||||||
#ifdef TAOS_RANDOM_FILE_FAIL_TEST
|
|
||||||
ssize_t taosReadFileRandomFail(int fd, void *buf, size_t count, const char *file, uint32_t line);
|
|
||||||
ssize_t taosWriteFileRandomFail(int fd, void *buf, size_t count, const char *file, uint32_t line);
|
|
||||||
off_t taosLSeekRandomFail(int fd, off_t offset, int whence, const char *file, uint32_t line);
|
|
||||||
#undef taosTRead
|
|
||||||
#undef taosTWrite
|
|
||||||
#undef taosLSeek
|
|
||||||
#define taosTRead(fd, buf, count) taosReadFileRandomFail(fd, buf, count, __FILE__, __LINE__)
|
|
||||||
#define taosTWrite(fd, buf, count) taosWriteFileRandomFail(fd, buf, count, __FILE__, __LINE__)
|
|
||||||
#define taosLSeek(fd, offset, whence) taosLSeekRandomFail(fd, offset, whence, __FILE__, __LINE__)
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int32_t taosFileRename(char *fullPath, char *suffix, char delimiter, char **dstPath);
|
|
||||||
|
|
||||||
// TAOS_OS_FUNC_FILE_GETTMPFILEPATH
|
// TAOS_OS_FUNC_FILE_GETTMPFILEPATH
|
||||||
void taosGetTmpfilePath(const char *fileNamePrefix, char *dstPath);
|
void taosGetTmpfilePath(const char *fileNamePrefix, char *dstPath);
|
||||||
|
|
||||||
#ifndef TAOS_OS_FUNC_FILE_FTRUNCATE
|
// TAOS_OS_FUNC_FILE_FTRUNCATE
|
||||||
#define taosFtruncate ftruncate
|
int32_t taosFtruncate(int32_t fd, int64_t length);
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -62,11 +62,8 @@ extern "C" {
|
||||||
#define TAOS_OS_FUNC_FILE_ISDIR
|
#define TAOS_OS_FUNC_FILE_ISDIR
|
||||||
#define TAOS_OS_FUNC_FILE_ISLNK
|
#define TAOS_OS_FUNC_FILE_ISLNK
|
||||||
#define TAOS_OS_FUNC_FILE_SENDIFLE
|
#define TAOS_OS_FUNC_FILE_SENDIFLE
|
||||||
#define taosFSendFile(outfile, infile, offset, count) taosFSendFileImp(outfile, infile, offset, size)
|
|
||||||
#define taosTSendFile(dfd, sfd, offset, size) taosTSendFileImp(dfd, sfd, offset, size)
|
|
||||||
#define TAOS_OS_FUNC_FILE_GETTMPFILEPATH
|
#define TAOS_OS_FUNC_FILE_GETTMPFILEPATH
|
||||||
#define TAOS_OS_FUNC_FILE_FTRUNCATE
|
#define TAOS_OS_FUNC_FILE_FTRUNCATE
|
||||||
extern int taosFtruncate(int fd, int64_t length);
|
|
||||||
|
|
||||||
#define TAOS_OS_FUNC_MATH
|
#define TAOS_OS_FUNC_MATH
|
||||||
#define SWAP(a, b, c) \
|
#define SWAP(a, b, c) \
|
||||||
|
@ -139,7 +136,6 @@ typedef int (*__compar_fn_t)(const void *, const void *);
|
||||||
#define in_addr_t unsigned long
|
#define in_addr_t unsigned long
|
||||||
#define socklen_t int
|
#define socklen_t int
|
||||||
#define htobe64 htonll
|
#define htobe64 htonll
|
||||||
#define twrite write
|
|
||||||
#define getpid _getpid
|
#define getpid _getpid
|
||||||
|
|
||||||
struct tm *localtime_r(const time_t *timep, struct tm *result);
|
struct tm *localtime_r(const time_t *timep, struct tm *result);
|
||||||
|
|
|
@ -19,21 +19,19 @@
|
||||||
|
|
||||||
#define _SEND_FILE_STEP_ 1000
|
#define _SEND_FILE_STEP_ 1000
|
||||||
|
|
||||||
int taosFSendFileImp(FILE* out_file, FILE* in_file, int64_t* offset, int32_t count) {
|
int64_t taosFSendFile(FILE *out_file, FILE *in_file, int64_t *offset, int64_t count) {
|
||||||
fseek(in_file, (int32_t)(*offset), 0);
|
fseek(in_file, (int32_t)(*offset), 0);
|
||||||
int writeLen = 0;
|
int writeLen = 0;
|
||||||
uint8_t buffer[_SEND_FILE_STEP_] = { 0 };
|
uint8_t buffer[_SEND_FILE_STEP_] = {0};
|
||||||
|
|
||||||
for (int len = 0; len < (count - _SEND_FILE_STEP_); len += _SEND_FILE_STEP_) {
|
for (int len = 0; len < (count - _SEND_FILE_STEP_); len += _SEND_FILE_STEP_) {
|
||||||
size_t rlen = fread(buffer, 1, _SEND_FILE_STEP_, in_file);
|
size_t rlen = fread(buffer, 1, _SEND_FILE_STEP_, in_file);
|
||||||
if (rlen <= 0) {
|
if (rlen <= 0) {
|
||||||
return writeLen;
|
return writeLen;
|
||||||
}
|
} else if (rlen < _SEND_FILE_STEP_) {
|
||||||
else if (rlen < _SEND_FILE_STEP_) {
|
|
||||||
fwrite(buffer, 1, rlen, out_file);
|
fwrite(buffer, 1, rlen, out_file);
|
||||||
return (int)(writeLen + rlen);
|
return (int)(writeLen + rlen);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
fwrite(buffer, 1, _SEND_FILE_STEP_, in_file);
|
fwrite(buffer, 1, _SEND_FILE_STEP_, in_file);
|
||||||
writeLen += _SEND_FILE_STEP_;
|
writeLen += _SEND_FILE_STEP_;
|
||||||
}
|
}
|
||||||
|
@ -44,8 +42,7 @@ int taosFSendFileImp(FILE* out_file, FILE* in_file, int64_t* offset, int32_t cou
|
||||||
size_t rlen = fread(buffer, 1, remain, in_file);
|
size_t rlen = fread(buffer, 1, remain, in_file);
|
||||||
if (rlen <= 0) {
|
if (rlen <= 0) {
|
||||||
return writeLen;
|
return writeLen;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
fwrite(buffer, 1, remain, out_file);
|
fwrite(buffer, 1, remain, out_file);
|
||||||
writeLen += remain;
|
writeLen += remain;
|
||||||
}
|
}
|
||||||
|
@ -54,7 +51,7 @@ int taosFSendFileImp(FILE* out_file, FILE* in_file, int64_t* offset, int32_t cou
|
||||||
return writeLen;
|
return writeLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t taosTSendFileImp(int dfd, int sfd, off_t *offset, size_t size) {
|
int64_t taosSendFile(int32_t dfd, int32_t sfd, int64_t* offset, int64_t size) {
|
||||||
uError("not implemented yet");
|
uError("taosSendFile not implemented yet");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
|
@ -1,141 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define _DEFAULT_SOURCE
|
|
||||||
#include "os.h"
|
|
||||||
|
|
||||||
#define RANDOM_NETWORK_FAIL_FACTOR 20
|
|
||||||
|
|
||||||
#ifdef TAOS_RANDOM_NETWORK_FAIL
|
|
||||||
|
|
||||||
ssize_t taosSendRandomFail(int sockfd, const void *buf, size_t len, int flags) {
|
|
||||||
if (rand() % RANDOM_NETWORK_FAIL_FACTOR == 0) {
|
|
||||||
errno = ECONNRESET;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return send(sockfd, buf, len, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
ssize_t taosSendToRandomFail(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr,
|
|
||||||
socklen_t addrlen) {
|
|
||||||
if (rand() % RANDOM_NETWORK_FAIL_FACTOR == 0) {
|
|
||||||
errno = ECONNRESET;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return sendto(sockfd, buf, len, flags, dest_addr, addrlen);
|
|
||||||
}
|
|
||||||
|
|
||||||
ssize_t taosReadSocketRandomFail(int fd, void *buf, size_t count) {
|
|
||||||
if (rand() % RANDOM_NETWORK_FAIL_FACTOR == 0) {
|
|
||||||
errno = ECONNRESET;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return read(fd, buf, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
ssize_t taosWriteSocketRandomFail(int fd, const void *buf, size_t count) {
|
|
||||||
if (rand() % RANDOM_NETWORK_FAIL_FACTOR == 0) {
|
|
||||||
errno = EINTR;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return write(fd, buf, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif //TAOS_RANDOM_NETWORK_FAIL
|
|
||||||
|
|
||||||
#ifdef TAOS_RANDOM_FILE_FAIL
|
|
||||||
|
|
||||||
static int random_file_fail_factor = 20;
|
|
||||||
static FILE *fpRandomFileFailOutput = NULL;
|
|
||||||
|
|
||||||
void taosSetRandomFileFailFactor(int factor) {
|
|
||||||
random_file_fail_factor = factor;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void close_random_file_fail_output() {
|
|
||||||
if (fpRandomFileFailOutput != NULL) {
|
|
||||||
if (fpRandomFileFailOutput != stdout) {
|
|
||||||
fclose(fpRandomFileFailOutput);
|
|
||||||
}
|
|
||||||
fpRandomFileFailOutput = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void random_file_fail_output_sig(int sig) {
|
|
||||||
fprintf(fpRandomFileFailOutput, "signal %d received.\n", sig);
|
|
||||||
|
|
||||||
struct sigaction act = {0};
|
|
||||||
act.sa_handler = SIG_DFL;
|
|
||||||
sigaction(sig, &act, NULL);
|
|
||||||
|
|
||||||
close_random_file_fail_output();
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
void taosSetRandomFileFailOutput(const char *path) {
|
|
||||||
if (path == NULL) {
|
|
||||||
fpRandomFileFailOutput = stdout;
|
|
||||||
} else if ((fpRandomFileFailOutput = fopen(path, "w")) != NULL) {
|
|
||||||
atexit(close_random_file_fail_output);
|
|
||||||
} else {
|
|
||||||
printf("failed to open random file fail log file '%s', errno=%d\n", path, errno);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct sigaction act = {0};
|
|
||||||
act.sa_handler = random_file_fail_output_sig;
|
|
||||||
sigaction(SIGFPE, &act, NULL);
|
|
||||||
sigaction(SIGSEGV, &act, NULL);
|
|
||||||
sigaction(SIGILL, &act, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
ssize_t taosReadFileRandomFail(int fd, void *buf, size_t count, const char *file, uint32_t line) {
|
|
||||||
if (random_file_fail_factor > 0) {
|
|
||||||
if (rand() % random_file_fail_factor == 0) {
|
|
||||||
errno = EIO;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return taosTReadImp(fd, buf, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
ssize_t taosWriteFileRandomFail(int fd, void *buf, size_t count, const char *file, uint32_t line) {
|
|
||||||
if (random_file_fail_factor > 0) {
|
|
||||||
if (rand() % random_file_fail_factor == 0) {
|
|
||||||
errno = EIO;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return taosTWriteImp(fd, buf, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
off_t taosLSeekRandomFail(int fd, off_t offset, int whence, const char *file, uint32_t line) {
|
|
||||||
if (random_file_fail_factor > 0) {
|
|
||||||
if (rand() % random_file_fail_factor == 0) {
|
|
||||||
errno = EIO;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return lseek(fd, offset, whence);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif //TAOS_RANDOM_FILE_FAIL
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "tglobal.h"
|
#include "tglobal.h"
|
||||||
|
|
||||||
#ifndef TAOS_OS_FUNC_FILE_GETTMPFILEPATH
|
#ifndef TAOS_OS_FUNC_FILE_GETTMPFILEPATH
|
||||||
|
|
||||||
void taosGetTmpfilePath(const char *fileNamePrefix, char *dstPath) {
|
void taosGetTmpfilePath(const char *fileNamePrefix, char *dstPath) {
|
||||||
const char *tdengineTmpFileNamePrefix = "tdengine-";
|
const char *tdengineTmpFileNamePrefix = "tdengine-";
|
||||||
|
|
||||||
|
@ -39,10 +40,10 @@ void taosGetTmpfilePath(const char *fileNamePrefix, char *dstPath) {
|
||||||
taosRandStr(rand, tListLen(rand) - 1);
|
taosRandStr(rand, tListLen(rand) - 1);
|
||||||
snprintf(dstPath, PATH_MAX, tmpPath, getpid(), rand);
|
snprintf(dstPath, PATH_MAX, tmpPath, getpid(), rand);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// rename file name
|
int32_t taosRenameFile(char *fullPath, char *suffix, char delimiter, char **dstPath) {
|
||||||
int32_t taosFileRename(char *fullPath, char *suffix, char delimiter, char **dstPath) {
|
|
||||||
int32_t ts = taosGetTimestampSec();
|
int32_t ts = taosGetTimestampSec();
|
||||||
|
|
||||||
char fname[PATH_MAX] = {0}; // max file name length must be less than 255
|
char fname[PATH_MAX] = {0}; // max file name length must be less than 255
|
||||||
|
@ -51,12 +52,13 @@ int32_t taosFileRename(char *fullPath, char *suffix, char delimiter, char **dstP
|
||||||
if (delimiterPos == NULL) return -1;
|
if (delimiterPos == NULL) return -1;
|
||||||
|
|
||||||
int32_t fileNameLen = 0;
|
int32_t fileNameLen = 0;
|
||||||
if (suffix)
|
if (suffix) {
|
||||||
fileNameLen = snprintf(fname, PATH_MAX, "%s.%d.%s", delimiterPos + 1, ts, suffix);
|
fileNameLen = snprintf(fname, PATH_MAX, "%s.%d.%s", delimiterPos + 1, ts, suffix);
|
||||||
else
|
} else {
|
||||||
fileNameLen = snprintf(fname, PATH_MAX, "%s.%d", delimiterPos + 1, ts);
|
fileNameLen = snprintf(fname, PATH_MAX, "%s.%d", delimiterPos + 1, ts);
|
||||||
|
}
|
||||||
|
|
||||||
size_t len = (size_t)((delimiterPos - fullPath) + fileNameLen + 1);
|
int32_t len = (int32_t)((delimiterPos - fullPath) + fileNameLen + 1);
|
||||||
if (*dstPath == NULL) {
|
if (*dstPath == NULL) {
|
||||||
*dstPath = calloc(1, len + 1);
|
*dstPath = calloc(1, len + 1);
|
||||||
if (*dstPath == NULL) return -1;
|
if (*dstPath == NULL) return -1;
|
||||||
|
@ -69,9 +71,9 @@ int32_t taosFileRename(char *fullPath, char *suffix, char delimiter, char **dstP
|
||||||
return rename(fullPath, *dstPath);
|
return rename(fullPath, *dstPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t taosTReadImp(int fd, void *buf, size_t count) {
|
int64_t taosRead(int32_t fd, void *buf, int64_t count) {
|
||||||
size_t leftbytes = count;
|
int64_t leftbytes = count;
|
||||||
ssize_t readbytes;
|
int64_t readbytes;
|
||||||
char * tbuf = (char *)buf;
|
char * tbuf = (char *)buf;
|
||||||
|
|
||||||
while (leftbytes > 0) {
|
while (leftbytes > 0) {
|
||||||
|
@ -83,19 +85,19 @@ ssize_t taosTReadImp(int fd, void *buf, size_t count) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else if (readbytes == 0) {
|
} else if (readbytes == 0) {
|
||||||
return (ssize_t)(count - leftbytes);
|
return (int64_t)(count - leftbytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
leftbytes -= readbytes;
|
leftbytes -= readbytes;
|
||||||
tbuf += readbytes;
|
tbuf += readbytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ssize_t)count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t taosTWriteImp(int fd, void *buf, size_t n) {
|
int64_t taosWrite(int32_t fd, void *buf, int64_t n) {
|
||||||
size_t nleft = n;
|
int64_t nleft = n;
|
||||||
ssize_t nwritten = 0;
|
int64_t nwritten = 0;
|
||||||
char * tbuf = (char *)buf;
|
char * tbuf = (char *)buf;
|
||||||
|
|
||||||
while (nleft > 0) {
|
while (nleft > 0) {
|
||||||
|
@ -110,13 +112,14 @@ ssize_t taosTWriteImp(int fd, void *buf, size_t n) {
|
||||||
tbuf += nwritten;
|
tbuf += nwritten;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ssize_t)n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef TAOS_OS_FUNC_FILE_SENDIFLE
|
#ifndef TAOS_OS_FUNC_FILE_SENDIFLE
|
||||||
ssize_t taosTSendFileImp(int dfd, int sfd, off_t *offset, size_t size) {
|
|
||||||
size_t leftbytes = size;
|
int64_t taosSendFile(int32_t dfd, int32_t sfd, int64_t *offset, int64_t size) {
|
||||||
ssize_t sentbytes;
|
int64_t leftbytes = size;
|
||||||
|
int64_t sentbytes;
|
||||||
|
|
||||||
while (leftbytes > 0) {
|
while (leftbytes > 0) {
|
||||||
/*
|
/*
|
||||||
|
@ -131,7 +134,7 @@ ssize_t taosTSendFileImp(int dfd, int sfd, off_t *offset, size_t size) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else if (sentbytes == 0) {
|
} else if (sentbytes == 0) {
|
||||||
return (ssize_t)(size - leftbytes);
|
return (int64_t)(size - leftbytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
leftbytes -= sentbytes;
|
leftbytes -= sentbytes;
|
||||||
|
@ -139,4 +142,17 @@ ssize_t taosTSendFileImp(int dfd, int sfd, off_t *offset, size_t size) {
|
||||||
|
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int64_t taosFSendFile(FILE *outfile, FILE *infile, int64_t *offset, int64_t size) {
|
||||||
|
return taosSendFile(fileno(outfile), fileno(infile), offset, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef TAOS_OS_FUNC_FILE_FTRUNCATE
|
||||||
|
|
||||||
|
int32_t taosFtruncate(int32_t fd, int64_t length) {
|
||||||
|
return ftruncate(fd, length);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -43,19 +43,19 @@ void taosGetTmpfilePath(const char *fileNamePrefix, char *dstPath) {
|
||||||
|
|
||||||
#define _SEND_FILE_STEP_ 1000
|
#define _SEND_FILE_STEP_ 1000
|
||||||
|
|
||||||
int taosFSendFileImp(FILE* out_file, FILE* in_file, int64_t* offset, int32_t count) {
|
int64_t taosFSendFile(FILE *out_file, FILE *in_file, int64_t *offset, int64_t count) {
|
||||||
fseek(in_file, (int32_t)(*offset), 0);
|
fseek(in_file, (int32_t)(*offset), 0);
|
||||||
int writeLen = 0;
|
int64_t writeLen = 0;
|
||||||
uint8_t buffer[_SEND_FILE_STEP_] = { 0 };
|
uint8_t buffer[_SEND_FILE_STEP_] = { 0 };
|
||||||
|
|
||||||
for (int len = 0; len < (count - _SEND_FILE_STEP_); len += _SEND_FILE_STEP_) {
|
for (int64_t len = 0; len < (count - _SEND_FILE_STEP_); len += _SEND_FILE_STEP_) {
|
||||||
size_t rlen = fread(buffer, 1, _SEND_FILE_STEP_, in_file);
|
size_t rlen = fread(buffer, 1, _SEND_FILE_STEP_, in_file);
|
||||||
if (rlen <= 0) {
|
if (rlen <= 0) {
|
||||||
return writeLen;
|
return writeLen;
|
||||||
}
|
}
|
||||||
else if (rlen < _SEND_FILE_STEP_) {
|
else if (rlen < _SEND_FILE_STEP_) {
|
||||||
fwrite(buffer, 1, rlen, out_file);
|
fwrite(buffer, 1, rlen, out_file);
|
||||||
return (int)(writeLen + rlen);
|
return (int64_t)(writeLen + rlen);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fwrite(buffer, 1, _SEND_FILE_STEP_, in_file);
|
fwrite(buffer, 1, _SEND_FILE_STEP_, in_file);
|
||||||
|
@ -63,7 +63,7 @@ int taosFSendFileImp(FILE* out_file, FILE* in_file, int64_t* offset, int32_t cou
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int remain = count - writeLen;
|
int64_t remain = count - writeLen;
|
||||||
if (remain > 0) {
|
if (remain > 0) {
|
||||||
size_t rlen = fread(buffer, 1, remain, in_file);
|
size_t rlen = fread(buffer, 1, remain, in_file);
|
||||||
if (rlen <= 0) {
|
if (rlen <= 0) {
|
||||||
|
@ -78,12 +78,12 @@ int taosFSendFileImp(FILE* out_file, FILE* in_file, int64_t* offset, int32_t cou
|
||||||
return writeLen;
|
return writeLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t taosTSendFileImp(int dfd, int sfd, off_t *offset, size_t size) {
|
int64_t taosSendFile(int32_t dfd, int32_t sfd, int64_t* offset, int64_t size) {
|
||||||
uError("taosTSendFileImp no implemented yet");
|
uError("taosSendFile no implemented yet");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int taosFtruncate(int fd, int64_t length) {
|
int32_t taosFtruncate(int32_t fd, int64_t length) {
|
||||||
uError("taosFtruncate no implemented yet");
|
uError("taosFtruncate no implemented yet");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
|
@ -772,7 +772,7 @@ int32_t tsBufMerge(STSBuf* pDestBuf, const STSBuf* pSrcBuf) {
|
||||||
int64_t offset = getDataStartOffset();
|
int64_t offset = getDataStartOffset();
|
||||||
int32_t size = (int32_t)pSrcBuf->fileSize - (int32_t)offset;
|
int32_t size = (int32_t)pSrcBuf->fileSize - (int32_t)offset;
|
||||||
|
|
||||||
ssize_t rc = taosFSendFile(pDestBuf->f, pSrcBuf->f, &offset, size);
|
int64_t rc = taosFSendFile(pDestBuf->f, pSrcBuf->f, &offset, size);
|
||||||
|
|
||||||
if (rc == -1) {
|
if (rc == -1) {
|
||||||
// tscError("failed to merge tsBuf from:%s to %s, reason:%s\n", pSrcBuf->path, pDestBuf->path, strerror(errno));
|
// tscError("failed to merge tsBuf from:%s to %s, reason:%s\n", pSrcBuf->path, pDestBuf->path, strerror(errno));
|
||||||
|
|
|
@ -149,7 +149,7 @@ static int syncRetrieveFile(SSyncPeer *pPeer) {
|
||||||
int sfd = open(name, O_RDONLY);
|
int sfd = open(name, O_RDONLY);
|
||||||
if (sfd < 0) break;
|
if (sfd < 0) break;
|
||||||
|
|
||||||
ret = taosTSendFile(pPeer->syncFd, sfd, NULL, fileInfo.size);
|
ret = taosSendFile(pPeer->syncFd, sfd, NULL, fileInfo.size);
|
||||||
close(sfd);
|
close(sfd);
|
||||||
if (ret < 0) break;
|
if (ret < 0) break;
|
||||||
|
|
||||||
|
@ -406,7 +406,7 @@ static int syncRetrieveWal(SSyncPeer *pPeer) {
|
||||||
int sfd = open(fname, O_RDONLY);
|
int sfd = open(fname, O_RDONLY);
|
||||||
if (sfd < 0) break;
|
if (sfd < 0) break;
|
||||||
|
|
||||||
code = taosTSendFile(pPeer->syncFd, sfd, NULL, size);
|
code = taosSendFile(pPeer->syncFd, sfd, NULL, size);
|
||||||
close(sfd);
|
close(sfd);
|
||||||
if (code < 0) break;
|
if (code < 0) break;
|
||||||
|
|
||||||
|
|
|
@ -428,7 +428,7 @@ int tsdbUpdateFileHeader(SFile *pFile) {
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (taosTWrite(pFile->fd, (void *)buf, TSDB_FILE_HEAD_SIZE) < TSDB_FILE_HEAD_SIZE) {
|
if (taosWrite(pFile->fd, (void *)buf, TSDB_FILE_HEAD_SIZE) < TSDB_FILE_HEAD_SIZE) {
|
||||||
tsdbError("failed to write %d bytes to file %s since %s", TSDB_FILE_HEAD_SIZE, pFile->fname, strerror(errno));
|
tsdbError("failed to write %d bytes to file %s since %s", TSDB_FILE_HEAD_SIZE, pFile->fname, strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -493,7 +493,7 @@ int tsdbLoadFileHeader(SFile *pFile, uint32_t *version) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosTRead(pFile->fd, buf, TSDB_FILE_HEAD_SIZE) < TSDB_FILE_HEAD_SIZE) {
|
if (taosRead(pFile->fd, buf, TSDB_FILE_HEAD_SIZE) < TSDB_FILE_HEAD_SIZE) {
|
||||||
tsdbError("failed to read file %s header part with %d bytes, reason:%s", pFile->fname, TSDB_FILE_HEAD_SIZE,
|
tsdbError("failed to read file %s header part with %d bytes, reason:%s", pFile->fname, TSDB_FILE_HEAD_SIZE,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
terrno = TSDB_CODE_TDB_FILE_CORRUPTED;
|
terrno = TSDB_CODE_TDB_FILE_CORRUPTED;
|
||||||
|
|
|
@ -579,7 +579,7 @@ static int32_t tsdbSaveConfig(char *rootDir, STsdbCfg *pCfg) {
|
||||||
|
|
||||||
taosCalcChecksumAppend(0, (uint8_t *)buf, TSDB_FILE_HEAD_SIZE);
|
taosCalcChecksumAppend(0, (uint8_t *)buf, TSDB_FILE_HEAD_SIZE);
|
||||||
|
|
||||||
if (taosTWrite(fd, (void *)buf, TSDB_FILE_HEAD_SIZE) < TSDB_FILE_HEAD_SIZE) {
|
if (taosWrite(fd, (void *)buf, TSDB_FILE_HEAD_SIZE) < TSDB_FILE_HEAD_SIZE) {
|
||||||
tsdbError("vgId:%d failed to write %d bytes to file %s since %s", pCfg->tsdbId, TSDB_FILE_HEAD_SIZE, fname,
|
tsdbError("vgId:%d failed to write %d bytes to file %s since %s", pCfg->tsdbId, TSDB_FILE_HEAD_SIZE, fname,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
@ -620,7 +620,7 @@ static int tsdbLoadConfig(char *rootDir, STsdbCfg *pCfg) {
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosTRead(fd, (void *)buf, TSDB_FILE_HEAD_SIZE) < TSDB_FILE_HEAD_SIZE) {
|
if (taosRead(fd, (void *)buf, TSDB_FILE_HEAD_SIZE) < TSDB_FILE_HEAD_SIZE) {
|
||||||
tsdbError("failed to read %d bytes from file %s since %s", TSDB_FILE_HEAD_SIZE, fname, strerror(errno));
|
tsdbError("failed to read %d bytes from file %s since %s", TSDB_FILE_HEAD_SIZE, fname, strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
goto _err;
|
goto _err;
|
||||||
|
|
|
@ -335,7 +335,7 @@ int tsdbMoveLastBlockIfNeccessary(SRWHelper *pHelper) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosTSendFile(helperNewLastF(pHelper)->fd, helperLastF(pHelper)->fd, NULL, pCompBlock->len) < pCompBlock->len) {
|
if (taosSendFile(helperNewLastF(pHelper)->fd, helperLastF(pHelper)->fd, NULL, pCompBlock->len) < pCompBlock->len) {
|
||||||
tsdbError("vgId:%d failed to sendfile from file %s to file %s since %s", REPO_ID(pHelper->pRepo),
|
tsdbError("vgId:%d failed to sendfile from file %s to file %s since %s", REPO_ID(pHelper->pRepo),
|
||||||
helperLastF(pHelper)->fname, helperNewLastF(pHelper)->fname, strerror(errno));
|
helperLastF(pHelper)->fname, helperNewLastF(pHelper)->fname, strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
@ -380,7 +380,7 @@ int tsdbWriteCompInfo(SRWHelper *pHelper) {
|
||||||
pIdx->tid = pHelper->tableInfo.tid;
|
pIdx->tid = pHelper->tableInfo.tid;
|
||||||
ASSERT(pIdx->offset >= TSDB_FILE_HEAD_SIZE);
|
ASSERT(pIdx->offset >= TSDB_FILE_HEAD_SIZE);
|
||||||
|
|
||||||
if (taosTWrite(pFile->fd, (void *)(pHelper->pCompInfo), pIdx->len) < (int)pIdx->len) {
|
if (taosWrite(pFile->fd, (void *)(pHelper->pCompInfo), pIdx->len) < (int)pIdx->len) {
|
||||||
tsdbError("vgId:%d failed to write %d bytes to file %s since %s", REPO_ID(pHelper->pRepo), pIdx->len,
|
tsdbError("vgId:%d failed to write %d bytes to file %s since %s", REPO_ID(pHelper->pRepo), pIdx->len,
|
||||||
pFile->fname, strerror(errno));
|
pFile->fname, strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
@ -432,7 +432,7 @@ int tsdbWriteCompIdx(SRWHelper *pHelper) {
|
||||||
|
|
||||||
ASSERT(offset == pFile->info.size);
|
ASSERT(offset == pFile->info.size);
|
||||||
|
|
||||||
if (taosTWrite(pFile->fd, (void *)pHelper->pWIdx, pFile->info.len) < (int)pFile->info.len) {
|
if (taosWrite(pFile->fd, (void *)pHelper->pWIdx, pFile->info.len) < (int)pFile->info.len) {
|
||||||
tsdbError("vgId:%d failed to write %d bytes to file %s since %s", REPO_ID(pHelper->pRepo), pFile->info.len,
|
tsdbError("vgId:%d failed to write %d bytes to file %s since %s", REPO_ID(pHelper->pRepo), pFile->info.len,
|
||||||
pFile->fname, strerror(errno));
|
pFile->fname, strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
@ -454,7 +454,7 @@ int tsdbLoadCompIdxImpl(SFile *pFile, uint32_t offset, uint32_t len, void *buffe
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosTRead(pFile->fd, buffer, len) < len) {
|
if (taosRead(pFile->fd, buffer, len) < len) {
|
||||||
tsdbError("%s: read file %s offset %u len %u failed since %s", prefixMsg, pFile->fname, offset, len,
|
tsdbError("%s: read file %s offset %u len %u failed since %s", prefixMsg, pFile->fname, offset, len,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
terrno = TSDB_CODE_TDB_FILE_CORRUPTED;
|
terrno = TSDB_CODE_TDB_FILE_CORRUPTED;
|
||||||
|
@ -551,7 +551,7 @@ int tsdbLoadCompInfoImpl(SFile *pFile, SCompIdx *pIdx, SCompInfo **ppCompInfo) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosTRead(pFile->fd, (void *)(*ppCompInfo), pIdx->len) < (int)pIdx->len) {
|
if (taosRead(pFile->fd, (void *)(*ppCompInfo), pIdx->len) < (int)pIdx->len) {
|
||||||
tsdbError("%s: read file %s offset %u len %u failed since %s", prefixMsg, pFile->fname, pIdx->offset, pIdx->len,
|
tsdbError("%s: read file %s offset %u len %u failed since %s", prefixMsg, pFile->fname, pIdx->offset, pIdx->len,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
@ -608,7 +608,7 @@ int tsdbLoadCompData(SRWHelper *pHelper, SCompBlock *pCompBlock, void *target) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosTRead(pFile->fd, (void *)pHelper->pCompData, tsize) < tsize) {
|
if (taosRead(pFile->fd, (void *)pHelper->pCompData, tsize) < tsize) {
|
||||||
tsdbError("vgId:%d failed to read %" PRIzu " bytes from file %s since %s", REPO_ID(pHelper->pRepo), tsize, pFile->fname,
|
tsdbError("vgId:%d failed to read %" PRIzu " bytes from file %s since %s", REPO_ID(pHelper->pRepo), tsize, pFile->fname,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
@ -823,7 +823,7 @@ static int tsdbWriteBlockToFile(SRWHelper *pHelper, SFile *pFile, SDataCols *pDa
|
||||||
sizeof(TSCKSUM));
|
sizeof(TSCKSUM));
|
||||||
|
|
||||||
// Write the whole block to file
|
// Write the whole block to file
|
||||||
if (taosTWrite(pFile->fd, (void *)pCompData, lsize) < lsize) {
|
if (taosWrite(pFile->fd, (void *)pCompData, lsize) < lsize) {
|
||||||
tsdbError("vgId:%d failed to write %d bytes to file %s since %s", REPO_ID(helperRepo(pHelper)), lsize, pFile->fname,
|
tsdbError("vgId:%d failed to write %d bytes to file %s since %s", REPO_ID(helperRepo(pHelper)), lsize, pFile->fname,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
@ -1210,7 +1210,7 @@ static int tsdbLoadColData(SRWHelper *pHelper, SFile *pFile, SCompBlock *pCompBl
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosTRead(pFile->fd, pHelper->pBuffer, pCompCol->len) < pCompCol->len) {
|
if (taosRead(pFile->fd, pHelper->pBuffer, pCompCol->len) < pCompCol->len) {
|
||||||
tsdbError("vgId:%d failed to read %d bytes from file %s since %s", REPO_ID(pHelper->pRepo), pCompCol->len, pFile->fname,
|
tsdbError("vgId:%d failed to read %d bytes from file %s since %s", REPO_ID(pHelper->pRepo), pCompCol->len, pFile->fname,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
@ -1325,7 +1325,7 @@ static int tsdbLoadBlockDataImpl(SRWHelper *pHelper, SCompBlock *pCompBlock, SDa
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
if (taosTRead(fd, (void *)pCompData, pCompBlock->len) < pCompBlock->len) {
|
if (taosRead(fd, (void *)pCompData, pCompBlock->len) < pCompBlock->len) {
|
||||||
tsdbError("vgId:%d failed to read %d bytes from file %s since %s", REPO_ID(pHelper->pRepo), pCompBlock->len,
|
tsdbError("vgId:%d failed to read %d bytes from file %s since %s", REPO_ID(pHelper->pRepo), pCompBlock->len,
|
||||||
pFile->fname, strerror(errno));
|
pFile->fname, strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
|
|
@ -188,7 +188,7 @@ int tdKVStoreStartCommit(SKVStore *pStore) {
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosTSendFile(pStore->sfd, pStore->fd, NULL, TD_KVSTORE_HEADER_SIZE) < TD_KVSTORE_HEADER_SIZE) {
|
if (taosSendFile(pStore->sfd, pStore->fd, NULL, TD_KVSTORE_HEADER_SIZE) < TD_KVSTORE_HEADER_SIZE) {
|
||||||
uError("failed to send file %d bytes since %s", TD_KVSTORE_HEADER_SIZE, strerror(errno));
|
uError("failed to send file %d bytes since %s", TD_KVSTORE_HEADER_SIZE, strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
goto _err;
|
goto _err;
|
||||||
|
@ -248,13 +248,13 @@ int tdUpdateKVStoreRecord(SKVStore *pStore, uint64_t uid, void *cont, int contLe
|
||||||
ASSERT(tlen == POINTER_DISTANCE(pBuf, buf));
|
ASSERT(tlen == POINTER_DISTANCE(pBuf, buf));
|
||||||
ASSERT(tlen == sizeof(SKVRecord));
|
ASSERT(tlen == sizeof(SKVRecord));
|
||||||
|
|
||||||
if (taosTWrite(pStore->fd, buf, tlen) < tlen) {
|
if (taosWrite(pStore->fd, buf, tlen) < tlen) {
|
||||||
uError("failed to write %d bytes to file %s since %s", tlen, pStore->fname, strerror(errno));
|
uError("failed to write %d bytes to file %s since %s", tlen, pStore->fname, strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosTWrite(pStore->fd, cont, contLen) < contLen) {
|
if (taosWrite(pStore->fd, cont, contLen) < contLen) {
|
||||||
uError("failed to write %d bytes to file %s since %s", contLen, pStore->fname, strerror(errno));
|
uError("failed to write %d bytes to file %s since %s", contLen, pStore->fname, strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -292,7 +292,7 @@ int tdDropKVStoreRecord(SKVStore *pStore, uint64_t uid) {
|
||||||
void *pBuf = buf;
|
void *pBuf = buf;
|
||||||
tdEncodeKVRecord(&pBuf, &rInfo);
|
tdEncodeKVRecord(&pBuf, &rInfo);
|
||||||
|
|
||||||
if (taosTWrite(pStore->fd, buf, POINTER_DISTANCE(pBuf, buf)) < POINTER_DISTANCE(pBuf, buf)) {
|
if (taosWrite(pStore->fd, buf, POINTER_DISTANCE(pBuf, buf)) < POINTER_DISTANCE(pBuf, buf)) {
|
||||||
uError("failed to write %" PRId64 " bytes to file %s since %s", (int64_t)(POINTER_DISTANCE(pBuf, buf)), pStore->fname, strerror(errno));
|
uError("failed to write %" PRId64 " bytes to file %s since %s", (int64_t)(POINTER_DISTANCE(pBuf, buf)), pStore->fname, strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -339,7 +339,7 @@ void tsdbGetStoreInfo(char *fname, uint32_t *magic, int64_t *size) {
|
||||||
int fd = open(fname, O_RDONLY);
|
int fd = open(fname, O_RDONLY);
|
||||||
if (fd < 0) goto _err;
|
if (fd < 0) goto _err;
|
||||||
|
|
||||||
if (taosTRead(fd, buf, TD_KVSTORE_HEADER_SIZE) < TD_KVSTORE_HEADER_SIZE) goto _err;
|
if (taosRead(fd, buf, TD_KVSTORE_HEADER_SIZE) < TD_KVSTORE_HEADER_SIZE) goto _err;
|
||||||
if (!taosCheckChecksumWhole((uint8_t *)buf, TD_KVSTORE_HEADER_SIZE)) goto _err;
|
if (!taosCheckChecksumWhole((uint8_t *)buf, TD_KVSTORE_HEADER_SIZE)) goto _err;
|
||||||
|
|
||||||
void *pBuf = (void *)buf;
|
void *pBuf = (void *)buf;
|
||||||
|
@ -368,7 +368,7 @@ static int tdLoadKVStoreHeader(int fd, char *fname, SStoreInfo *pInfo, uint32_t
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosTRead(fd, buf, TD_KVSTORE_HEADER_SIZE) < TD_KVSTORE_HEADER_SIZE) {
|
if (taosRead(fd, buf, TD_KVSTORE_HEADER_SIZE) < TD_KVSTORE_HEADER_SIZE) {
|
||||||
uError("failed to read %d bytes from file %s since %s", TD_KVSTORE_HEADER_SIZE, fname, strerror(errno));
|
uError("failed to read %d bytes from file %s since %s", TD_KVSTORE_HEADER_SIZE, fname, strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -402,7 +402,7 @@ static int tdUpdateKVStoreHeader(int fd, char *fname, SStoreInfo *pInfo) {
|
||||||
ASSERT(POINTER_DISTANCE(pBuf, buf) + sizeof(TSCKSUM) <= TD_KVSTORE_HEADER_SIZE);
|
ASSERT(POINTER_DISTANCE(pBuf, buf) + sizeof(TSCKSUM) <= TD_KVSTORE_HEADER_SIZE);
|
||||||
|
|
||||||
taosCalcChecksumAppend(0, (uint8_t *)buf, TD_KVSTORE_HEADER_SIZE);
|
taosCalcChecksumAppend(0, (uint8_t *)buf, TD_KVSTORE_HEADER_SIZE);
|
||||||
if (taosTWrite(fd, buf, TD_KVSTORE_HEADER_SIZE) < TD_KVSTORE_HEADER_SIZE) {
|
if (taosWrite(fd, buf, TD_KVSTORE_HEADER_SIZE) < TD_KVSTORE_HEADER_SIZE) {
|
||||||
uError("failed to write %d bytes to file %s since %s", TD_KVSTORE_HEADER_SIZE, fname, strerror(errno));
|
uError("failed to write %d bytes to file %s since %s", TD_KVSTORE_HEADER_SIZE, fname, strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -535,7 +535,7 @@ static int tdRestoreKVStore(SKVStore *pStore) {
|
||||||
ASSERT(pStore->info.size == TD_KVSTORE_HEADER_SIZE);
|
ASSERT(pStore->info.size == TD_KVSTORE_HEADER_SIZE);
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
ssize_t tsize = taosTRead(pStore->fd, tbuf, sizeof(SKVRecord));
|
int64_t tsize = taosRead(pStore->fd, tbuf, sizeof(SKVRecord));
|
||||||
if (tsize == 0) break;
|
if (tsize == 0) break;
|
||||||
if (tsize < sizeof(SKVRecord)) {
|
if (tsize < sizeof(SKVRecord)) {
|
||||||
uError("failed to read %" PRIzu " bytes from file %s at offset %" PRId64 "since %s", sizeof(SKVRecord), pStore->fname,
|
uError("failed to read %" PRIzu " bytes from file %s at offset %" PRId64 "since %s", sizeof(SKVRecord), pStore->fname,
|
||||||
|
@ -598,7 +598,7 @@ static int tdRestoreKVStore(SKVStore *pStore) {
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosTRead(pStore->fd, buf, (size_t)pRecord->size) < pRecord->size) {
|
if (taosRead(pStore->fd, buf, (size_t)pRecord->size) < pRecord->size) {
|
||||||
uError("failed to read %" PRId64 " bytes from file %s since %s, offset %" PRId64, pRecord->size, pStore->fname,
|
uError("failed to read %" PRId64 " bytes from file %s since %s, offset %" PRId64, pRecord->size, pStore->fname,
|
||||||
strerror(errno), pRecord->offset);
|
strerror(errno), pRecord->offset);
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
|
|
@ -336,11 +336,11 @@ static int32_t taosOpenLogFile(char *fn, int32_t maxLines, int32_t maxFileNum) {
|
||||||
lseek(tsLogObj.logHandle->fd, 0, SEEK_END);
|
lseek(tsLogObj.logHandle->fd, 0, SEEK_END);
|
||||||
|
|
||||||
sprintf(name, "==================================================\n");
|
sprintf(name, "==================================================\n");
|
||||||
taosTWrite(tsLogObj.logHandle->fd, name, (uint32_t)strlen(name));
|
taosWrite(tsLogObj.logHandle->fd, name, (uint32_t)strlen(name));
|
||||||
sprintf(name, " new log file \n");
|
sprintf(name, " new log file \n");
|
||||||
taosTWrite(tsLogObj.logHandle->fd, name, (uint32_t)strlen(name));
|
taosWrite(tsLogObj.logHandle->fd, name, (uint32_t)strlen(name));
|
||||||
sprintf(name, "==================================================\n");
|
sprintf(name, "==================================================\n");
|
||||||
taosTWrite(tsLogObj.logHandle->fd, name, (uint32_t)strlen(name));
|
taosWrite(tsLogObj.logHandle->fd, name, (uint32_t)strlen(name));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -390,7 +390,7 @@ void taosPrintLog(const char *flags, int32_t dflag, const char *format, ...) {
|
||||||
if (tsAsyncLog) {
|
if (tsAsyncLog) {
|
||||||
taosPushLogBuffer(tsLogObj.logHandle, buffer, len);
|
taosPushLogBuffer(tsLogObj.logHandle, buffer, len);
|
||||||
} else {
|
} else {
|
||||||
taosTWrite(tsLogObj.logHandle->fd, buffer, len);
|
taosWrite(tsLogObj.logHandle->fd, buffer, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tsLogObj.maxLines > 0) {
|
if (tsLogObj.maxLines > 0) {
|
||||||
|
@ -400,7 +400,7 @@ void taosPrintLog(const char *flags, int32_t dflag, const char *format, ...) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dflag & DEBUG_SCREEN) taosTWrite(1, buffer, (uint32_t)len);
|
if (dflag & DEBUG_SCREEN) taosWrite(1, buffer, (uint32_t)len);
|
||||||
}
|
}
|
||||||
|
|
||||||
void taosDumpData(unsigned char *msg, int32_t len) {
|
void taosDumpData(unsigned char *msg, int32_t len) {
|
||||||
|
@ -419,7 +419,7 @@ void taosDumpData(unsigned char *msg, int32_t len) {
|
||||||
pos += 3;
|
pos += 3;
|
||||||
if (c >= 16) {
|
if (c >= 16) {
|
||||||
temp[pos++] = '\n';
|
temp[pos++] = '\n';
|
||||||
taosTWrite(tsLogObj.logHandle->fd, temp, (uint32_t)pos);
|
taosWrite(tsLogObj.logHandle->fd, temp, (uint32_t)pos);
|
||||||
c = 0;
|
c = 0;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
}
|
}
|
||||||
|
@ -427,9 +427,7 @@ void taosDumpData(unsigned char *msg, int32_t len) {
|
||||||
|
|
||||||
temp[pos++] = '\n';
|
temp[pos++] = '\n';
|
||||||
|
|
||||||
taosTWrite(tsLogObj.logHandle->fd, temp, (uint32_t)pos);
|
taosWrite(tsLogObj.logHandle->fd, temp, (uint32_t)pos);
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void taosPrintLongString(const char *flags, int32_t dflag, const char *format, ...) {
|
void taosPrintLongString(const char *flags, int32_t dflag, const char *format, ...) {
|
||||||
|
@ -467,7 +465,7 @@ void taosPrintLongString(const char *flags, int32_t dflag, const char *format, .
|
||||||
if (tsAsyncLog) {
|
if (tsAsyncLog) {
|
||||||
taosPushLogBuffer(tsLogObj.logHandle, buffer, len);
|
taosPushLogBuffer(tsLogObj.logHandle, buffer, len);
|
||||||
} else {
|
} else {
|
||||||
taosTWrite(tsLogObj.logHandle->fd, buffer, len);
|
taosWrite(tsLogObj.logHandle->fd, buffer, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tsLogObj.maxLines > 0) {
|
if (tsLogObj.maxLines > 0) {
|
||||||
|
@ -477,7 +475,7 @@ void taosPrintLongString(const char *flags, int32_t dflag, const char *format, .
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dflag & DEBUG_SCREEN) taosTWrite(1, buffer, (uint32_t)len);
|
if (dflag & DEBUG_SCREEN) taosWrite(1, buffer, (uint32_t)len);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -606,7 +604,7 @@ static void *taosAsyncOutputLog(void *param) {
|
||||||
while (1) {
|
while (1) {
|
||||||
log_size = taosPollLogBuffer(tLogBuff, tempBuffer, TSDB_DEFAULT_LOG_BUF_UNIT);
|
log_size = taosPollLogBuffer(tLogBuff, tempBuffer, TSDB_DEFAULT_LOG_BUF_UNIT);
|
||||||
if (log_size) {
|
if (log_size) {
|
||||||
taosTWrite(tLogBuff->fd, tempBuffer, log_size);
|
taosWrite(tLogBuff->fd, tempBuffer, log_size);
|
||||||
LOG_BUF_START(tLogBuff) = (LOG_BUF_START(tLogBuff) + log_size) % LOG_BUF_SIZE(tLogBuff);
|
LOG_BUF_START(tLogBuff) = (LOG_BUF_START(tLogBuff) + log_size) % LOG_BUF_SIZE(tLogBuff);
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -265,7 +265,7 @@ void taosNotePrint(taosNoteInfo * pNote, const char * const format, ...)
|
||||||
buffer[len] = 0;
|
buffer[len] = 0;
|
||||||
|
|
||||||
if (pNote->taosNoteFd >= 0) {
|
if (pNote->taosNoteFd >= 0) {
|
||||||
taosTWrite(pNote->taosNoteFd, buffer, (unsigned int)len);
|
taosWrite(pNote->taosNoteFd, buffer, (unsigned int)len);
|
||||||
|
|
||||||
if (pNote->taosNoteMaxLines > 0) {
|
if (pNote->taosNoteMaxLines > 0) {
|
||||||
pNote->taosNoteLines++;
|
pNote->taosNoteLines++;
|
||||||
|
|
|
@ -37,7 +37,7 @@ int32_t walRenew(void *handle) {
|
||||||
pthread_mutex_lock(&pWal->mutex);
|
pthread_mutex_lock(&pWal->mutex);
|
||||||
|
|
||||||
if (pWal->fd >= 0) {
|
if (pWal->fd >= 0) {
|
||||||
close(pWal->fd);
|
tclose(pWal->fd);
|
||||||
wDebug("vgId:%d, file:%s, it is closed", pWal->vgId, pWal->name);
|
wDebug("vgId:%d, file:%s, it is closed", pWal->vgId, pWal->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ int32_t walWrite(void *handle, SWalHead *pHead) {
|
||||||
|
|
||||||
pthread_mutex_lock(&pWal->mutex);
|
pthread_mutex_lock(&pWal->mutex);
|
||||||
|
|
||||||
if (taosTWrite(pWal->fd, pHead, contLen) != contLen) {
|
if (taosWrite(pWal->fd, pHead, contLen) != contLen) {
|
||||||
code = TAOS_SYSTEM_ERROR(errno);
|
code = TAOS_SYSTEM_ERROR(errno);
|
||||||
wError("vgId:%d, file:%s, failed to write since %s", pWal->vgId, pWal->name, strerror(errno));
|
wError("vgId:%d, file:%s, failed to write since %s", pWal->vgId, pWal->name, strerror(errno));
|
||||||
} else {
|
} else {
|
||||||
|
@ -209,7 +209,7 @@ static int32_t walSkipCorruptedRecord(SWal *pWal, SWalHead *pHead, int32_t fd, i
|
||||||
return TSDB_CODE_WAL_FILE_CORRUPTED;
|
return TSDB_CODE_WAL_FILE_CORRUPTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosTRead(fd, pHead, sizeof(SWalHead)) <= 0) {
|
if (taosRead(fd, pHead, sizeof(SWalHead)) <= 0) {
|
||||||
wError("vgId:%d, read to end of corrupted wal file, offset:%" PRId64, pWal->vgId, pos);
|
wError("vgId:%d, read to end of corrupted wal file, offset:%" PRId64, pWal->vgId, pos);
|
||||||
return TSDB_CODE_WAL_FILE_CORRUPTED;
|
return TSDB_CODE_WAL_FILE_CORRUPTED;
|
||||||
}
|
}
|
||||||
|
@ -250,7 +250,7 @@ static int32_t walRestoreWalFile(SWal *pWal, void *pVnode, FWalWrite writeFp, ch
|
||||||
SWalHead *pHead = buffer;
|
SWalHead *pHead = buffer;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
int32_t ret = taosTRead(fd, pHead, sizeof(SWalHead));
|
int32_t ret = taosRead(fd, pHead, sizeof(SWalHead));
|
||||||
if (ret == 0) break;
|
if (ret == 0) break;
|
||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
@ -287,7 +287,7 @@ static int32_t walRestoreWalFile(SWal *pWal, void *pVnode, FWalWrite writeFp, ch
|
||||||
pHead = buffer;
|
pHead = buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = taosTRead(fd, pHead->cont, pHead->len);
|
ret = taosRead(fd, pHead->cont, pHead->len);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
wError("vgId:%d, file:%s, failed to read wal body since %s", pWal->vgId, name, strerror(errno));
|
wError("vgId:%d, file:%s, failed to read wal body since %s", pWal->vgId, name, strerror(errno));
|
||||||
code = TAOS_SYSTEM_ERROR(errno);
|
code = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
@ -310,7 +310,7 @@ static int32_t walRestoreWalFile(SWal *pWal, void *pVnode, FWalWrite writeFp, ch
|
||||||
(*writeFp)(pVnode, pHead, TAOS_QTYPE_WAL);
|
(*writeFp)(pVnode, pHead, TAOS_QTYPE_WAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
close(fd);
|
tclose(fd);
|
||||||
tfree(buffer);
|
tfree(buffer);
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
|
|
Loading…
Reference in New Issue