Revision bb69b4ce7f93c9c94ad7719b96299790535e2d78 authored by Levi Tamasi on 13 November 2020, 01:31:28 UTC, committed by Facebook GitHub Bot on 13 November 2020, 01:33:04 UTC
Summary:
https://github.com/facebook/rocksdb/pull/7461 accidentally broke
`InternalStats::DumpCFStats` by making `DumpCFFileHistogram` overwrite
the output of `DumpCFStatsNoFileHistogram` instead of appending to it,
resulting in only the file histogram related information getting logged.
The patch fixes this by reverting to appending in `DumpCFFileHistogram`.

Fixes https://github.com/facebook/rocksdb/issues/7664 .

Pull Request resolved: https://github.com/facebook/rocksdb/pull/7666

Test Plan: Ran `make check` and checked the info log of `db_bench`.

Reviewed By: riversand963

Differential Revision: D24929051

Pulled By: ltamasi

fbshipit-source-id: 636a3d5ebb5ce23de4f3fe4f03ad3f16cb2858f8
1 parent cf9d8e4
Raw File
cat_ignore_eagain
#! /bin/bash

# Work around issue with parallel make output causing random error, as in
# make[1]: write error: stdout
# Probably due to a kernel bug:
#   https://bugs.launchpad.net/ubuntu/+source/linux-signed/+bug/1814393
# Seems to affect image ubuntu-1604:201903-01 and ubuntu-1604:202004-01

cd "$(dirname $0)"

if [ ! -x cat_ignore_eagain.out ]; then
    cc -x c -o cat_ignore_eagain.out - << EOF
#include <unistd.h>
#include <errno.h>
#include <stdio.h>
int main() {
    int n, m, p;
    char buf[1024];
    for (;;) {
        n = read(STDIN_FILENO, buf, 1024);
        if (n > 0 && n <= 1024) {
            for (m = 0; m < n;) {
                p = write(STDOUT_FILENO, buf + m, n - m);
                if (p < 0) {
                    if (errno == EAGAIN) {
                        // ignore but pause a bit
                        usleep(100);
                    } else {
                        perror("write failed");
                        return 42;
                    }
                } else {
                    m += p;
                }
            }
        } else if (n < 0) {
            if (errno == EAGAIN) {
                // ignore but pause a bit
                usleep(100);
            } else {
                // Some non-ignorable error
                perror("read failed");
                return 43;
            }
        } else {
            // EOF
            return 0;
        }
    }
}
EOF
fi

exec ./cat_ignore_eagain.out
back to top