|
2 | 2 | set -e
|
3 | 3 |
|
4 | 4 | # For Percona PostgreSQL Operator, we need to focus on protecting the postmaster process
|
5 |
| -# Original user in the Percona PostgreSQL Operator image |
6 |
| -ORIGINAL_USER=26 |
7 | 5 | ORIGINAL_ENTRYPOINT="/opt/crunchy/bin/postgres-ha/bootstrap-postgres-ha.sh"
|
8 | 6 |
|
9 |
| -# Set OOM score adjustment for our own process (will be inherited) |
10 |
| -if [ -f "/proc/self/oom_score_adj" ]; then |
11 |
| - echo -900 > /proc/self/oom_score_adj |
12 |
| - echo "Set OOM score adjustment to -900 for pid 1" |
13 |
| -else |
14 |
| - echo "WARNING: Cannot set OOM score adjustment (file not found)" |
| 7 | +# Try to set OOM score adjustment if possible, but don't fail if we can't |
| 8 | +if command -v sudo >/dev/null 2>&1; then |
| 9 | + # If sudo is available, use it to set OOM score |
| 10 | + sudo -n sh -c 'echo -900 > /proc/self/oom_score_adj' >/dev/null 2>&1 || true |
| 11 | + echo "Attempted to set OOM score adjustment using sudo" |
| 12 | +elif command -v setcap >/dev/null 2>&1; then |
| 13 | + # Try to give the oom-adjuster script the capability to adjust OOM scores |
| 14 | + setcap 'cap_sys_resource=+ep' /usr/local/bin/postgres-oom-adjuster.sh >/dev/null 2>&1 || true |
| 15 | + echo "Attempted to grant capabilities to OOM adjuster" |
15 | 16 | fi
|
16 | 17 |
|
17 |
| -# Start the OOM adjuster in the background |
| 18 | +# Start a background process to monitor and adjust PostgreSQL if possible |
18 | 19 | nohup /usr/local/bin/postgres-oom-adjuster.sh >> /tmp/postgres-oom-adjuster.log 2>&1 &
|
19 | 20 | echo "Started postmaster OOM adjuster in background"
|
20 | 21 |
|
21 |
| -# Set environment variables for PostgreSQL child processes |
22 |
| -export PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj |
23 |
| -export PG_OOM_ADJUST_VALUE=0 |
24 |
| - |
25 |
| -# Switching to the original user and executing original entrypoint |
26 |
| -echo "Switching to user $ORIGINAL_USER and executing original entrypoint: $ORIGINAL_ENTRYPOINT $@" |
27 |
| - |
28 |
| -# Check which user-switching command is available |
29 |
| -if command -v runuser >/dev/null 2>&1; then |
30 |
| - # Use runuser (available on RHEL/CentOS/Fedora) |
31 |
| - exec runuser -u "#$ORIGINAL_USER" -- "$ORIGINAL_ENTRYPOINT" "$@" |
32 |
| -else |
33 |
| - # Fall back to su |
34 |
| - exec su -s /bin/bash $ORIGINAL_USER -c "$ORIGINAL_ENTRYPOINT $*" |
35 |
| -fi |
| 22 | +# Execute the original entrypoint |
| 23 | +echo "Executing original entrypoint: $ORIGINAL_ENTRYPOINT $@" |
| 24 | +exec "$ORIGINAL_ENTRYPOINT" "$@" |
0 commit comments