36adc76235
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1420007 13f79535-47bb-0310-9956-ffa450edef68
131 lines
3.3 KiB
Diff
131 lines
3.3 KiB
Diff
--- src/common.h
|
|
+++ src/common.h
|
|
@@ -42,6 +42,8 @@
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <unistd.h>
|
|
+#include <signal.h>
|
|
+#include <fcntl.h>
|
|
#include <boost/shared_ptr.hpp>
|
|
#include <boost/filesystem/operations.hpp>
|
|
#include <boost/filesystem/convenience.hpp>
|
|
|
|
--- src/conn_pool.cpp
|
|
+++ src/conn_pool.cpp
|
|
@@ -271,11 +271,11 @@
|
|
++iter) {
|
|
msgs.push_back(**iter);
|
|
}
|
|
- ResultCode result = TRY_LATER;
|
|
+ ResultCode::type result = ResultCode::TRY_LATER;
|
|
try {
|
|
result = resendClient->Log(msgs);
|
|
|
|
- if (result == OK) {
|
|
+ if (result == ResultCode::OK) {
|
|
if (g_Handler) {
|
|
g_Handler->incrementCounter("sent", size);
|
|
}
|
|
|
|
--- src/file.cpp
|
|
+++ src/file.cpp
|
|
@@ -74,9 +74,21 @@
|
|
}
|
|
|
|
bool StdFile::openWrite() {
|
|
+ // if file is a fifo, temporarily open it for read
|
|
+ int fd = -1;
|
|
+ struct stat st;
|
|
+ int s = stat(filename.c_str(), &st);
|
|
+ if (s != -1 && S_ISFIFO(st.st_mode))
|
|
+ fd = ::open(filename.c_str(), O_RDONLY | O_NONBLOCK);
|
|
+
|
|
// open file for write in append mode
|
|
ios_base::openmode mode = fstream::out | fstream::app;
|
|
- return open(mode);
|
|
+ bool r = open(mode);
|
|
+
|
|
+ // close fifo
|
|
+ if (fd != -1)
|
|
+ ::close(fd);
|
|
+ return r;
|
|
}
|
|
|
|
bool StdFile::openTruncate() {
|
|
|
|
--- src/scribe_server.cpp
|
|
+++ src/scribe_server.cpp
|
|
@@ -55,6 +55,8 @@
|
|
if (-1 == setrlimit(RLIMIT_NOFILE, &r_fd)) {
|
|
LOG_OPER("setrlimit error (setting max fd size)");
|
|
}
|
|
+
|
|
+ signal(SIGPIPE, SIG_IGN);
|
|
|
|
int next_option;
|
|
const char* const short_options = "hp:c:";
|
|
@@ -110,7 +112,7 @@
|
|
}
|
|
|
|
TNonblockingServer server(processor, binaryProtocolFactory,
|
|
- g_Handler->port, thread_manager);
|
|
+ g_Handler->host, g_Handler->port, thread_manager);
|
|
|
|
LOG_OPER("Starting scribe server on port %lu", g_Handler->port);
|
|
fflush(stderr);
|
|
@@ -409,13 +411,13 @@
|
|
}
|
|
|
|
|
|
-ResultCode scribeHandler::Log(const vector<LogEntry>& messages) {
|
|
- ResultCode result;
|
|
+ResultCode::type scribeHandler::Log(const vector<LogEntry>& messages) {
|
|
+ ResultCode::type result;
|
|
|
|
scribeHandlerLock.acquireRead();
|
|
|
|
if (throttleRequest(messages)) {
|
|
- result = TRY_LATER;
|
|
+ result = ResultCode::TRY_LATER;
|
|
goto end;
|
|
}
|
|
|
|
@@ -463,7 +465,7 @@
|
|
addMessage(*msg_iter, store_list);
|
|
}
|
|
|
|
- result = OK;
|
|
+ result = ResultCode::OK;
|
|
|
|
end:
|
|
scribeHandlerLock.release();
|
|
@@ -583,6 +585,8 @@
|
|
throw runtime_error("No port number configured");
|
|
}
|
|
|
|
+ config.getString("host", host);
|
|
+
|
|
// check if config sets the size to use for the ThreadManager
|
|
unsigned long int num_threads;
|
|
if (config.getUnsigned("num_thrift_server_threads", num_threads)) {
|
|
|
|
--- src/scribe_server.h
|
|
+++ src/scribe_server.h
|
|
@@ -42,7 +42,7 @@
|
|
void initialize();
|
|
void reinitialize();
|
|
|
|
- scribe::thrift::ResultCode Log(const std::vector<scribe::thrift::LogEntry>& messages);
|
|
+ scribe::thrift::ResultCode::type Log(const std::vector<scribe::thrift::LogEntry>& messages);
|
|
|
|
void getVersion(std::string& _return) {_return = "2.2";}
|
|
facebook::fb303::fb_status getStatus();
|
|
@@ -51,6 +51,7 @@
|
|
void setStatusDetails(const std::string& new_status_details);
|
|
|
|
unsigned long int port; // it's long because that's all I implemented in the conf class
|
|
+ std::string host;
|
|
|
|
// number of threads processing new Thrift connections
|
|
size_t numThriftServerThreads;
|
|
|