You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CREATE UNLOGGED TABLE IF NOT EXISTS cleanup_tracking_auth_actors(
6
7
authz_id CHAR(32)
7
8
);
9
+
CREATE UNLOGGED TABLE IF NOT EXISTS cleanup_tracking_auth_objects(
10
+
authz_id CHAR(32)
11
+
);
8
12
9
13
CREATE OR REPLACE RULE cleanup_auth_actor_creation_tracking AS ON INSERT TO auth_actor DO INSERT INTO cleanup_tracking_auth_actors VALUES (NEW.authz_id);
14
+
CREATE OR REPLACE RULE cleanup_auth_object_creation_tracking AS ON INSERT TO auth_object DO INSERT INTO cleanup_tracking_auth_objects VALUES (NEW.authz_id);
15
+
10
16
COMMIT;
11
17
SQL
12
18
13
19
CREATE_SQL2=<<SQL
20
+
BEGIN;
21
+
14
22
CREATE UNLOGGED TABLE IF NOT EXISTS cleanup_known_auth_actors(
15
23
authz_id CHAR(32)
16
24
);
25
+
CREATE UNLOGGED TABLE IF NOT EXISTS cleanup_known_auth_objects(
26
+
authz_id CHAR(32)
27
+
);
28
+
29
+
COMMIT;
17
30
SQL
18
31
19
32
DELETE_SQL=<<SQL
20
33
BEGIN;
21
34
DROP RULE IF EXISTS cleanup_auth_actor_creation_tracking ON auth_actor;
22
35
DROP TABLE IF EXISTS cleanup_tracking_auth_actors;
23
36
DROP TABLE IF EXISTS cleanup_known_auth_actors;
37
+
DROP RULE IF EXISTS cleanup_auth_object_creation_tracking ON auth_object;
38
+
DROP TABLE IF EXISTS cleanup_tracking_auth_objects;
39
+
DROP TABLE IF EXISTS cleanup_known_auth_objects;
24
40
COMMIT;
25
41
SQL
26
42
@@ -38,13 +54,28 @@
38
54
DELETE FROM auth_actor WHERE authz_id IN (SELECT authz_id FROM orphaned_auth_actors)
39
55
SQL
40
56
57
+
CLEANUP_SQL2=<<SQL
58
+
WITH good_auth_objects AS (
59
+
SELECT authz_id FROM cleanup_tracking_auth_objects
60
+
UNION
61
+
SELECT authz_id FROM cleanup_known_auth_objects
62
+
),
63
+
orphaned_auth_objects AS (
64
+
SELECT authz_id
65
+
FROM auth_object
66
+
WHERE authz_id NOT IN (SELECT authz_id FROM good_auth_objects)
67
+
ORDER BY id LIMIT $1
68
+
)
69
+
DELETE FROM auth_object WHERE authz_id IN (SELECT authz_id FROM orphaned_auth_objects)
objects=erchef_db.exec("SELECT authz_id FROM cookbook_artifacts
172
+
UNION SELECT authz_id FROM cookbooks
173
+
UNION SELECT authz_id FROM data_bags
174
+
UNION SELECT authz_id FROM environments
175
+
UNION SELECT authz_id FROM nodes
176
+
UNION SELECT authz_id FROM orgs
177
+
UNION SELECT authz_id FROM policies
178
+
UNION SELECT authz_id FROM policy_groups
179
+
UNION SELECT authz_id FROM roles")
180
+
objects.mapdo |object|
181
+
object["authz_id"]
182
+
end
183
+
end
184
+
end
185
+
138
186
defsafety_check(db)
139
187
res=db.exec("SELECT * FROM pg_tables
140
188
WHERE tablename='cleanup_tracking_auth_actors'")
@@ -143,6 +191,14 @@ def safety_check(db)
143
191
puts"ERROR: If you are sure cleanup-bifrost is not running, you can clean up the tracking tables with: #{ChefUtils::Dist::Server::SERVER_CTL} cleanup-bifrost --force-cleanup"
144
192
exit(1)
145
193
end
194
+
195
+
res=db.exec("SELECT * FROM pg_tables
196
+
WHERE tablename='cleanup_tracking_auth_objects'")
197
+
ifres.ntuples > 0
198
+
puts"ERROR: cleanup_tracking_auth_objects already exists. cleanup-bifrost may be running."
199
+
puts"ERROR: If you are sure cleanup-bifrost is not running, you can clean up the tracking tables with: #{ChefUtils::Dist::Server::SERVER_CTL} cleanup-bifrost --force-cleanup"
0 commit comments