Fix bugs when docker restart
This commit is contained in:
@ -76,6 +76,8 @@ namespace storage
|
|||||||
|| OB_UNLIKELY(0 >= word_len)) {
|
|| OB_UNLIKELY(0 >= word_len)) {
|
||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
LOG_WARN("invalid arguments", K(ret), KPC(param), KP(allocator), KP(word), K(word_len));
|
LOG_WARN("invalid arguments", K(ret), KPC(param), KP(allocator), KP(word), K(word_len));
|
||||||
|
} else if (word_len < FT_MIN_WORD_LEN || word_len > FT_MAX_WORD_LEN) {
|
||||||
|
LOG_DEBUG("skip too small or large word", K(ret), K(word_len));
|
||||||
} else if (OB_ISNULL(buf = static_cast<char *>(allocator->alloc(word_len)))) {
|
} else if (OB_ISNULL(buf = static_cast<char *>(allocator->alloc(word_len)))) {
|
||||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||||
LOG_WARN("fail to allocate word memory", K(ret), K(word_len));
|
LOG_WARN("fail to allocate word memory", K(ret), K(word_len));
|
||||||
|
@ -25,6 +25,9 @@ namespace storage
|
|||||||
|
|
||||||
class ObSpaceFTParser final
|
class ObSpaceFTParser final
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
static const int64_t FT_MIN_WORD_LEN = 3;
|
||||||
|
static const int64_t FT_MAX_WORD_LEN = 84;
|
||||||
public:
|
public:
|
||||||
static int segment(
|
static int segment(
|
||||||
lib::ObFTParserParam *param,
|
lib::ObFTParserParam *param,
|
||||||
|
@ -5,7 +5,7 @@ ARG VERSION
|
|||||||
ARG STEP
|
ARG STEP
|
||||||
|
|
||||||
RUN yum install -y yum-utils && \
|
RUN yum install -y yum-utils && \
|
||||||
yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo && \
|
yum-config-manager --add-repo https://mirrors.oceanbase.com/oceanbase/OceanBase.repo && \
|
||||||
sed -i 's/$releasever/7/' /etc/yum.repos.d/OceanBase.repo && \
|
sed -i 's/$releasever/7/' /etc/yum.repos.d/OceanBase.repo && \
|
||||||
yum install -y ob-deploy obclient ob-sysbench libaio bc libselinux-utils zip && \
|
yum install -y ob-deploy obclient ob-sysbench libaio bc libselinux-utils zip && \
|
||||||
rm -rf /usr/obd/mirror/remote/* && \
|
rm -rf /usr/obd/mirror/remote/* && \
|
||||||
@ -36,6 +36,7 @@ COPY init_store_for_fast_start.py /root/boot/
|
|||||||
ENV PATH /root/boot:$PATH
|
ENV PATH /root/boot:$PATH
|
||||||
ENV LD_LIBRARY_PATH /home/admin/oceanbase/lib:/root/ob/lib:$LD_LIBRARY_PATH
|
ENV LD_LIBRARY_PATH /home/admin/oceanbase/lib:/root/ob/lib:$LD_LIBRARY_PATH
|
||||||
|
|
||||||
|
STOPSIGNAL SIGTERM
|
||||||
WORKDIR /root
|
WORKDIR /root
|
||||||
CMD _boot
|
CMD _boot
|
||||||
|
|
||||||
|
@ -122,6 +122,13 @@ function deploy_failed {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function cleanup() {
|
||||||
|
obd cluster stop $OB_CLUSTER_NAME
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
trap 'cleanup' SIGTERM
|
||||||
|
|
||||||
# We should decide whether the observer's data exists and
|
# We should decide whether the observer's data exists and
|
||||||
# whether the obd has the information of the cluster
|
# whether the obd has the information of the cluster
|
||||||
|
|
||||||
@ -261,5 +268,7 @@ else
|
|||||||
echo "Please check the log file ${OB_HOME_PATH}/log/observer.log"
|
echo "Please check the log file ${OB_HOME_PATH}/log/observer.log"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
exec tail -f /dev/null
|
while :; do
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
@ -79,8 +79,8 @@ class ObTestAddWord final : public lib::ObFTParserParam::ObIAddWord
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static const char *TEST_FULLTEXT;
|
static const char *TEST_FULLTEXT;
|
||||||
static const int64_t TEST_WORD_COUNT = 9;
|
static const int64_t TEST_WORD_COUNT = 5;
|
||||||
static const int64_t TEST_WORD_COUNT_WITHOUT_STOPWORD = 6;
|
static const int64_t TEST_WORD_COUNT_WITHOUT_STOPWORD = 4;
|
||||||
public:
|
public:
|
||||||
ObTestAddWord();
|
ObTestAddWord();
|
||||||
virtual ~ObTestAddWord() = default;
|
virtual ~ObTestAddWord() = default;
|
||||||
@ -99,8 +99,8 @@ private:
|
|||||||
const char *ObTestAddWord::TEST_FULLTEXT = "OceanBase fulltext search is No.1 in the world.";
|
const char *ObTestAddWord::TEST_FULLTEXT = "OceanBase fulltext search is No.1 in the world.";
|
||||||
|
|
||||||
ObTestAddWord::ObTestAddWord()
|
ObTestAddWord::ObTestAddWord()
|
||||||
: words_{"oceanbase", "fulltext", "search", "is", "no", "1", "in", "the", "world"},
|
: words_{"oceanbase", "fulltext", "search", "the", "world"},
|
||||||
words_without_stopword_{"oceanbase", "fulltext", "search", "no", "1", "world"},
|
words_without_stopword_{"oceanbase", "fulltext", "search", "world"},
|
||||||
ith_word_(0)
|
ith_word_(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -451,6 +451,42 @@ TEST_F(ObTestFTParseHelper, test_parse_fulltext)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(ObTestFTParseHelper, test_min_and_max_word_len)
|
||||||
|
{
|
||||||
|
common::ObSEArray<ObFTWord, 16> words;
|
||||||
|
int64_t doc_length = 0;
|
||||||
|
|
||||||
|
// word len = 2;
|
||||||
|
const char *word_len_2 = "ab";
|
||||||
|
ASSERT_EQ(OB_SUCCESS, parse_helper_.segment(cs_type_, word_len_2, std::strlen(word_len_2), doc_length, words));
|
||||||
|
ASSERT_EQ(0, words.count());
|
||||||
|
|
||||||
|
// word len = 3;
|
||||||
|
const char *word_len_3 = "abc";
|
||||||
|
ASSERT_EQ(OB_SUCCESS, parse_helper_.segment(cs_type_, word_len_3, std::strlen(word_len_3), doc_length, words));
|
||||||
|
ASSERT_EQ(1, words.count());
|
||||||
|
|
||||||
|
// word len = 4;
|
||||||
|
const char *word_len_4 = "abcd";
|
||||||
|
ASSERT_EQ(OB_SUCCESS, parse_helper_.segment(cs_type_, word_len_4, std::strlen(word_len_4), doc_length, words));
|
||||||
|
ASSERT_EQ(1, words.count());
|
||||||
|
|
||||||
|
// word len = 76;
|
||||||
|
const char *word_len_76 = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
|
||||||
|
ASSERT_EQ(OB_SUCCESS, parse_helper_.segment(cs_type_, word_len_76, std::strlen(word_len_76), doc_length, words));
|
||||||
|
ASSERT_EQ(1, words.count());
|
||||||
|
|
||||||
|
// word len = 84;
|
||||||
|
const char *word_len_84 = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz123456";
|
||||||
|
ASSERT_EQ(OB_SUCCESS, parse_helper_.segment(cs_type_, word_len_84, std::strlen(word_len_84), doc_length, words));
|
||||||
|
ASSERT_EQ(1, words.count());
|
||||||
|
|
||||||
|
// word len = 85;
|
||||||
|
const char *word_len_85 = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz1234567";
|
||||||
|
ASSERT_EQ(OB_SUCCESS, parse_helper_.segment(cs_type_, word_len_85, std::strlen(word_len_85), doc_length, words));
|
||||||
|
ASSERT_EQ(0, words.count());
|
||||||
|
}
|
||||||
|
|
||||||
class ObTestNgramFTParseHelper : public ::testing::Test
|
class ObTestNgramFTParseHelper : public ::testing::Test
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Reference in New Issue
Block a user