diff --git a/_process_executor_8cs_source.html b/_process_executor_8cs_source.html
index 7f3f60e92c..319fcf0d32 100644
--- a/_process_executor_8cs_source.html
+++ b/_process_executor_8cs_source.html
@@ -298,7 +298,7 @@ $(function() {
- 253 logger.LogTrace(
"GetProcessByName: {0}...", name ??
throw new ArgumentNullException(nameof(name)));
+ 253 logger.LogTrace(
"GetProcessByName: {processName}...", name ??
throw new ArgumentNullException(nameof(name)));
254 var procs = global::System.Diagnostics.Process.GetProcessesByName(name);
255 global::System.Diagnostics.Process handle =
null;
256 foreach (var proc
in procs)
@@ -306,7 +306,7 @@ $(function() {
- 261 logger.LogTrace(
"Disposing extra found PID: {0}...", proc.Id);
+ 261 logger.LogTrace(
"Disposing extra found PID: {pid}...", proc.Id);
diff --git a/_session_persistor_8cs_source.html b/_session_persistor_8cs_source.html
index b2592af253..f980d21398 100644
--- a/_session_persistor_8cs_source.html
+++ b/_session_persistor_8cs_source.html
@@ -125,7 +125,7 @@ $(function() {
70 if (reattachInformation ==
null)
71 throw new ArgumentNullException(nameof(reattachInformation));
- 73 logger.LogDebug(
"Saving reattach information: {0}...", reattachInformation);
+ 73 logger.LogDebug(
"Saving reattach information: {info}...", reattachInformation);
75 await
ClearImpl(db,
false, cancellationToken);
@@ -148,112 +148,141 @@ $(function() {
96 TimeSpan? topicTimeout =
null;
-
-
- 99 var dbReattachInfos = await db
- 100 .ReattachInformations
-
- 102 .Where(x => x.CompileJob.Job.Instance.Id ==
metadata.Id)
- 103 .Include(x => x.CompileJob)
- 104 .ToListAsync(cancellationToken);
- 105 result = dbReattachInfos.FirstOrDefault();
- 106 if (result ==
default)
-
-
- 109 var timeoutMilliseconds = await db
-
-
-
- 113 .Select(x => x.DreamDaemonSettings.TopicRequestTimeout)
- 114 .FirstOrDefaultAsync(cancellationToken)
-
-
- 117 if (timeoutMilliseconds ==
default)
-
- 119 logger.LogCritical(
"Missing TopicRequestTimeout!");
-
+
+ 98 async Task KillProcess(Models.ReattachInformation reattachInfo)
+
+
+
+
+
+
+ 105 if (reattachInfo == result)
+
+ 107 logger.LogWarning(
"Killing PID {pid} associated with CompileJob-less reattach information...", reattachInfo.ProcessId);
+
+
+
+ 111 logger.LogWarning(
"Killing PID {pid} associated with extra reattach information...", reattachInfo.ProcessId);
+
+
+
+ 115 await process.Lifetime;
+
+
+
+
+ 120 logger.LogWarning(ex,
"Failed to kill process!");
-
- 123 topicTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds.Value);
-
-
- 126 foreach (var reattachInfo in dbReattachInfos)
-
-
-
-
-
-
-
- 134 logger.LogWarning(
"Killing PID {0} associated with extra reattach information...", reattachInfo.ProcessId);
-
-
- 137 using var process = processExecutor.GetProcess(reattachInfo.ProcessId);
-
- 139 await process.Lifetime;
-
-
-
- 143 logger.LogWarning(ex,
"Failed to kill process!");
-
-
- 146 db.ReattachInformations.Remove(reattachInfo);
-
-
- 149 await db.Save(cancellationToken);
-
+
+
+
+
+ 126 var dbReattachInfos = await db
+ 127 .ReattachInformations
+
+ 129 .Where(x => x.CompileJob.Job.Instance.Id ==
metadata.Id)
+ 130 .Include(x => x.CompileJob)
+ 131 .ToListAsync(cancellationToken);
+ 132 result = dbReattachInfos.FirstOrDefault();
+ 133 if (result ==
default)
+
+
+ 136 var timeoutMilliseconds = await db
+
+
+
+ 140 .Select(x => x.DreamDaemonSettings.TopicRequestTimeout)
+ 141 .FirstOrDefaultAsync(cancellationToken)
+
+
+ 144 if (timeoutMilliseconds ==
default)
+
+ 146 logger.LogCritical(
"Missing TopicRequestTimeout!");
+
+
+
+ 150 topicTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds.Value);
- 152 if (!topicTimeout.HasValue)
-
- 154 logger.LogDebug(
"Reattach information not found!");
-
-
-
-
-
-
- 161 logger.LogError(
"Unable to reattach! Could not load .dmb!");
-
-
-
-
-
-
-
+
+ 153 foreach (var reattachInfo in dbReattachInfos)
+
+
+
+
+
+
+
+ 161 await KillProcess(reattachInfo);
+
+ 163 db.ReattachInformations.Remove(reattachInfo);
+ 164 logger.LogTrace(
"Deleting ReattachInformation {id}...", reattachInfo.Id);
+
+
+ 167 await db.Save(cancellationToken);
+
- 170 logger.LogDebug(
"Reattach information loaded: {0}", info);
-
-
-
-
-
-
-
-
- 180 logger.LogDebug(
"Clearing reattach information");
- 181 return ClearImpl(db,
true, cancellationToken);
-
-
-
-
- 193 var baseQuery = databaseContext
-
-
- 196 .Where(x => x.CompileJob.Job.Instance.Id ==
metadata.Id);
-
-
-
- 200 .DeleteAsync(cancellationToken)
-
-
-
- 204 var results = await baseQuery.ToListAsync(cancellationToken);
- 205 foreach (var result
in results)
-
-
-
-
-
+ 170 if (!topicTimeout.HasValue)
+
+ 172 logger.LogDebug(
"Reattach information not found!");
+
+
+
+
+
+
+ 179 logger.LogError(
"Unable to reattach! Could not load .dmb!");
+ 180 await KillProcess(result);
+
+
+
+ 184 logger.LogTrace(
"Deleting ReattachInformation {id}...", result.
Id);
+
+ 186 .ReattachInformations
+
+ 188 .Where(x => x.Id == result.
Id)
+ 189 .DeleteAsync(cancellationToken);
+
+
+
+
+
+
+
+
+
+ 199 logger.LogDebug(
"Reattach information loaded: {info}", info);
+
+
+
+
+
+
+
+
+ 209 logger.LogDebug(
"Clearing reattach information");
+ 210 return ClearImpl(db,
true, cancellationToken);
+
+
+
+
+ 222 var baseQuery = databaseContext
+
+
+ 225 .Where(x => x.CompileJob.Job.Instance.Id ==
metadata.Id);
+
+
+
+ 229 .DeleteAsync(cancellationToken)
+
+
+
+ 233 var results = await baseQuery.ToListAsync(cancellationToken);
+ 234 foreach (var result
in results)
+
+
+
+
+
Metadata about a server instance.
string AccessIdentifier
Used to identify and authenticate the DreamDaemon instance.
@@ -265,11 +294,12 @@ $(function() {
readonly Api.Models.Instance metadata
The Api.Models.Instance for the SessionPersistor.
Task Save(ReattachInformation reattachInformation, CancellationToken cancellationToken)
Save some reattachInformation . A Task representing the running operation.
readonly IDmbFactory dmbFactory
The IDmbFactory for the SessionPersistor.
-async Task ClearImpl(IDatabaseContext databaseContext, bool instant, CancellationToken cancellationToken)
Clear any stored ReattachInformation.
+async Task ClearImpl(IDatabaseContext databaseContext, bool instant, CancellationToken cancellationToken)
Clear any stored ReattachInformation.
SessionPersistor(IDatabaseContextFactory databaseContextFactory, IDmbFactory dmbFactory, IProcessExecutor processExecutor, ILogger< SessionPersistor > logger, Api.Models.Instance metadata)
Initializes a new instance of the SessionPersistor class.
Task Clear(CancellationToken cancellationToken)
Clear any stored ReattachInformation. A Task representing the running operation.
+
Factory for IDmbProviders.
Task< IDmbProvider > FromCompileJob(CompileJob compileJob, CancellationToken cancellationToken)
Gets a IDmbProvider for a given CompileJob.
Handles saving and loading ReattachInformation.
@@ -279,6 +309,7 @@ $(function() {
IDatabaseCollection< ReattachInformation > ReattachInformations
The DbSet<TEntity> for ReattachInformations.
+IProcess GetProcess(int id)
Get a IProcess by id .
RebootState
Represents the action to take when /world/Reboot() is called.
diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html
index 7ea1a885c1..606f6ce885 100644
--- a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html
+++ b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html
@@ -289,7 +289,7 @@ Private Attributes
Implements Tgstation.Server.Host.Components.Session.ISessionPersistor.
-References Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl(), and Tgstation.Server.Host.Components.Session.SessionPersistor.logger.
+References Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl(), and Tgstation.Server.Host.Components.Session.SessionPersistor.logger.
Referenced by Tgstation.Server.Host.Components.Watchdog.WatchdogBase.DisposeAndNullControllers().
- Returns
- A Task representing the running operation.
-Definition at line 191 of file SessionPersistor.cs.
- 192 {
-
193 var baseQuery = databaseContext
-
-
195 .AsQueryable()
-
196 .Where(x => x.CompileJob.Job.Instance.Id ==
metadata.Id);
-
197
-
198 if (instant)
-
199 await baseQuery
-
200 .DeleteAsync(cancellationToken)
-
201 ;
-
202 else
-
203 {
-
204 var results = await baseQuery.ToListAsync(cancellationToken);
-
205 foreach (var result in results)
-
-
207 }
-
208 }
+
Definition at line 220 of file SessionPersistor.cs.
+
221 {
+
222 var baseQuery = databaseContext
+
+
224 .AsQueryable()
+
225 .Where(x => x.CompileJob.Job.Instance.Id ==
metadata.Id);
+
226
+
227 if (instant)
+
228 await baseQuery
+
229 .DeleteAsync(cancellationToken)
+
230 ;
+
231 else
+
232 {
+
233 var results = await baseQuery.ToListAsync(cancellationToken);
+
234 foreach (var result in results)
+
+
236 }
+
237 }
void Remove(TModel model)
Remove a given model from the the working set.
IDatabaseCollection< ReattachInformation > ReattachInformations
The DbSet<TEntity> for ReattachInformations.
@@ -463,87 +463,117 @@ Here is the caller graph for this function:
94 {
95 Models.ReattachInformation result = null;
96 TimeSpan? topicTimeout = null;
-
-
98 {
-
99 var dbReattachInfos = await db
-
100 .ReattachInformations
-
101 .AsQueryable()
-
102 .Where(x => x.CompileJob.Job.Instance.Id ==
metadata.Id)
-
103 .Include(x => x.CompileJob)
-
104 .ToListAsync(cancellationToken);
-
105 result = dbReattachInfos.FirstOrDefault();
-
106 if (result == default)
-
107 return;
-
108
-
109 var timeoutMilliseconds = await db
-
110 .Instances
-
111 .AsQueryable()
-
-
113 .Select(x => x.DreamDaemonSettings.TopicRequestTimeout)
-
114 .FirstOrDefaultAsync(cancellationToken)
-
115 ;
-
116
-
117 if (timeoutMilliseconds == default)
-
118 {
-
119 logger.LogCritical(
"Missing TopicRequestTimeout!");
-
120 return;
+
97
+
98 async Task KillProcess(Models.ReattachInformation reattachInfo)
+
99 {
+
100 try
+
101 {
+
+
103 if (process != null)
+
104 {
+
105 if (reattachInfo == result)
+
106 {
+
107 logger.LogWarning(
"Killing PID {pid} associated with CompileJob-less reattach information...", reattachInfo.ProcessId);
+
108 }
+
109 else
+
110 {
+
111 logger.LogWarning(
"Killing PID {pid} associated with extra reattach information...", reattachInfo.ProcessId);
+
112 }
+
113
+
114 process.Terminate();
+
115 await process.Lifetime;
+
116 }
+
117 }
+
118 catch (Exception ex)
+
119 {
+
120 logger.LogWarning(ex,
"Failed to kill process!");
121 }
-
122
-
123 topicTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds.Value);
-
124
-
125 bool first = true;
-
126 foreach (var reattachInfo in dbReattachInfos)
-
127 {
-
128 if (first)
-
129 {
-
130 first = false;
-
131 continue;
-
132 }
-
133
-
134 logger.LogWarning(
"Killing PID {0} associated with extra reattach information...", reattachInfo.ProcessId);
-
135 try
-
136 {
-
137 using var process = processExecutor.GetProcess(reattachInfo.ProcessId);
-
138 process.Terminate();
-
139 await process.Lifetime;
-
140 }
-
141 catch (Exception ex)
-
142 {
-
143 logger.LogWarning(ex,
"Failed to kill process!");
-
144 }
-
145
-
146 db.ReattachInformations.Remove(reattachInfo);
-
147 }
-
148
-
149 await db.Save(cancellationToken);
-
150 });
+
122 }
+
123
+
+
125 {
+
126 var dbReattachInfos = await db
+
127 .ReattachInformations
+
128 .AsQueryable()
+
129 .Where(x => x.CompileJob.Job.Instance.Id ==
metadata.Id)
+
130 .Include(x => x.CompileJob)
+
131 .ToListAsync(cancellationToken);
+
132 result = dbReattachInfos.FirstOrDefault();
+
133 if (result == default)
+
134 return;
+
135
+
136 var timeoutMilliseconds = await db
+
137 .Instances
+
138 .AsQueryable()
+
+
140 .Select(x => x.DreamDaemonSettings.TopicRequestTimeout)
+
141 .FirstOrDefaultAsync(cancellationToken)
+
142 ;
+
143
+
144 if (timeoutMilliseconds == default)
+
145 {
+
146 logger.LogCritical(
"Missing TopicRequestTimeout!");
+
147 return;
+
148 }
+
149
+
150 topicTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds.Value);
151
-
152 if (!topicTimeout.HasValue)
-
153 {
-
154 logger.LogDebug(
"Reattach information not found!");
-
155 return null;
-
156 }
-
157
-
-
159 if (dmb == null)
-
160 {
-
161 logger.LogError(
"Unable to reattach! Could not load .dmb!");
-
162 return null;
-
163 }
-
164
-
165 var info = new ReattachInformation(
-
166 result,
-
167 dmb,
-
168 topicTimeout.Value);
+
152 bool first = true;
+
153 foreach (var reattachInfo in dbReattachInfos)
+
154 {
+
155 if (first)
+
156 {
+
157 first = false;
+
158 continue;
+
159 }
+
160
+
161 await KillProcess(reattachInfo);
+
162
+
163 db.ReattachInformations.Remove(reattachInfo);
+
164 logger.LogTrace(
"Deleting ReattachInformation {id}...", reattachInfo.Id);
+
165 }
+
166
+
167 await db.Save(cancellationToken);
+
168 });
169
-
170 logger.LogDebug(
"Reattach information loaded: {0}", info);
-
171
-
172 return info;
-
173 }
+
170 if (!topicTimeout.HasValue)
+
171 {
+
172 logger.LogDebug(
"Reattach information not found!");
+
173 return null;
+
174 }
+
175
+
+
177 if (dmb == null)
+
178 {
+
179 logger.LogError(
"Unable to reattach! Could not load .dmb!");
+
180 await KillProcess(result);
+
181
+
+
183 {
+
184 logger.LogTrace(
"Deleting ReattachInformation {id}...", result.Id);
+
185 await db
+
186 .ReattachInformations
+
187 .AsQueryable()
+
188 .Where(x => x.Id == result.Id)
+
189 .DeleteAsync(cancellationToken);
+
190 });
+
191 return null;
+
192 }
+
193
+
194 var info = new ReattachInformation(
+
195 result,
+
196 dmb,
+
197 topicTimeout.Value);
+
198
+
199 logger.LogDebug(
"Reattach information loaded: {info}", info);
+
200
+
201 return info;
+
202 }
Task< IDmbProvider > FromCompileJob(CompileJob compileJob, CancellationToken cancellationToken)
Gets a IDmbProvider for a given CompileJob.
Task UseContext(Func< IDatabaseContext, Task > operation)
Run an operation in the scope of an IDatabaseContext.
+
IProcess GetProcess(int id)
Get a IProcess by id .
-References Tgstation.Server.Host.Models.ReattachInformation.CompileJob, Tgstation.Server.Host.Components.Session.SessionPersistor.databaseContextFactory, Tgstation.Server.Host.Components.Session.SessionPersistor.dmbFactory, Tgstation.Server.Host.Components.Deployment.IDmbFactory.FromCompileJob(), Tgstation.Server.Host.Components.Session.SessionPersistor.logger, Tgstation.Server.Host.Components.Session.SessionPersistor.metadata, and Tgstation.Server.Host.Database.IDatabaseContextFactory.UseContext().
+References Tgstation.Server.Host.Models.ReattachInformation.CompileJob, Tgstation.Server.Host.Components.Session.SessionPersistor.databaseContextFactory, Tgstation.Server.Host.Components.Session.SessionPersistor.dmbFactory, Tgstation.Server.Host.Components.Deployment.IDmbFactory.FromCompileJob(), Tgstation.Server.Host.System.IProcessExecutor.GetProcess(), Tgstation.Server.Host.Models.ReattachInformation.Id, Tgstation.Server.Host.Components.Session.SessionPersistor.logger, Tgstation.Server.Host.Components.Session.SessionPersistor.metadata, Tgstation.Server.Host.Components.Session.SessionPersistor.processExecutor, and Tgstation.Server.Host.Database.IDatabaseContextFactory.UseContext().
Referenced by Tgstation.Server.Host.Components.Watchdog.WatchdogBase.StartAsync().
Implements Tgstation.Server.Host.Components.Session.ISessionPersistor.
-References Tgstation.Server.Host.Components.Interop.DMApiParameters.AccessIdentifier, Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl(), and Tgstation.Server.Host.Components.Session.SessionPersistor.logger.
+References Tgstation.Server.Host.Components.Interop.DMApiParameters.AccessIdentifier, Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl(), and Tgstation.Server.Host.Components.Session.SessionPersistor.logger.
Referenced by Tgstation.Server.Host.Components.Watchdog.BasicWatchdog.InitController().
Definition at line 43 of file SessionPersistor.cs.
-Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl(), Tgstation.Server.Host.Components.Session.SessionPersistor.Load(), and Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor().
+Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl(), Tgstation.Server.Host.Components.Session.SessionPersistor.Load(), and Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor().
@@ -768,7 +799,7 @@ Here is the caller graph for this function:
Definition at line 33 of file SessionPersistor.cs.
-Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor().
+Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.Load(), and Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor().
diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.map b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.map
index 50bc1d70e2..311944cff5 100644
--- a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.map
+++ b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.map
@@ -1,5 +1,6 @@
diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.md5 b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.md5
index f2e173ff50..39e5d9411a 100644
--- a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.md5
+++ b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.md5
@@ -1 +1 @@
-d4f8af4d5efe452fc54088d7a93ebac1
\ No newline at end of file
+4a2d82eb817c5f18fe3a302ca2488d01
\ No newline at end of file
diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.png b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.png
index 25b948d85f..f7eb0452f5 100644
Binary files a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.png and b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.png differ
diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html
index 9e42b53012..d3e716e29c 100644
--- a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html
+++ b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html
@@ -2948,32 +2948,33 @@ Here is the call graph for this function:
diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.map b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.map
index 8a1d294d42..ed0ae8af27 100644
--- a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.map
+++ b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.map
@@ -1,28 +1,29 @@
diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.md5 b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.md5
index 81079e901b..57069f4156 100644
--- a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.md5
+++ b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.md5
@@ -1 +1 @@
-d3a336e057e75a0c5a07bd58f63be4ae
\ No newline at end of file
+4d9e7f5b431d22edfe94b258dc49a024
\ No newline at end of file
diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.png b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.png
index 1dd32e7854..8da3921adb 100644
Binary files a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.png and b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.png differ
diff --git a/class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html b/class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html
index 3223fee4c8..8ede891c66 100644
--- a/class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html
+++ b/class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html
@@ -236,6 +236,8 @@ Additional Inherited Members
Definition at line 13 of file ReattachInformation.cs.
+Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.Load().
+
The documentation for this class was generated from the following file:
diff --git a/class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html b/class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html
index 2dccbdc59e..c846eff445 100644
--- a/class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html
+++ b/class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html
@@ -647,7 +647,7 @@ Here is the call graph for this function:
Definition at line 251 of file ProcessExecutor.cs.
252 {
-
253 logger.LogTrace(
"GetProcessByName: {0}...", name ??
throw new ArgumentNullException(nameof(name)));
+
253 logger.LogTrace(
"GetProcessByName: {processName}...", name ??
throw new ArgumentNullException(nameof(name)));
254 var procs = global::System.Diagnostics.Process.GetProcessesByName(name);
255 global::System.Diagnostics.Process handle = null;
256 foreach (var proc in procs)
@@ -655,7 +655,7 @@ Here is the call graph for this function:
258 handle = proc;
259 else
260 {
- 261 logger.LogTrace(
"Disposing extra found PID: {0}...", proc.Id);
+ 261 logger.LogTrace(
"Disposing extra found PID: {pid}...", proc.Id);
262 proc.Dispose();
263 }
264
diff --git a/interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection.html b/interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection.html
index c7ef41ecba..dc4afceacb 100644
--- a/interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection.html
+++ b/interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection.html
@@ -286,7 +286,7 @@ Here is the caller graph for this function:
Implemented in Tgstation.Server.Host.Database.DatabaseCollection< TModel >.
-Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl().
+Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl().
diff --git a/interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html b/interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html
index 596ea34bc0..b2c5c62c47 100644
--- a/interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html
+++ b/interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html
@@ -721,7 +721,7 @@ Here is the caller graph for this function:
Definition at line 76 of file IDatabaseContext.cs.
-Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl().
+Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl().
diff --git a/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html b/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html
index afcd8f0aa4..daafa3548d 100644
--- a/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html
+++ b/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html
@@ -176,15 +176,17 @@ Here is the caller graph for this function:
Implemented in Tgstation.Server.Host.System.ProcessExecutor.
-Referenced by Tgstation.Server.Host.Components.Session.SessionControllerFactory.Reattach().
+Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.Load(), and Tgstation.Server.Host.Components.Session.SessionControllerFactory.Reattach().
diff --git a/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph.map b/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph.map
index 806ec98210..6127615835 100644
--- a/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph.map
+++ b/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph.map
@@ -1,5 +1,7 @@
diff --git a/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph.md5 b/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph.md5
index 474b2f89b3..eba059cb10 100644
--- a/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph.md5
+++ b/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph.md5
@@ -1 +1 @@
-71fec8c288fa936c40c86a4c4ae3acf6
\ No newline at end of file
+6c35c7e78a9998fb1ed349ae57d6315d
\ No newline at end of file
diff --git a/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph.png b/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph.png
index 537f277583..56621268cf 100644
Binary files a/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph.png and b/interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph.png differ