11package network .aika ;
22
33
4+ import network .aika .neuron .INeuron ;
5+ import network .aika .neuron .Neuron ;
46import org .slf4j .Logger ;
57import org .slf4j .LoggerFactory ;
68
@@ -23,6 +25,8 @@ public class Provider<T extends AbstractNode> implements Comparable<Provider<?>>
2325
2426 private volatile T n ;
2527
28+ private boolean markedDeleted ;
29+
2630
2731 public enum SuspensionMode {
2832 SAVE ,
@@ -87,7 +91,10 @@ public synchronized T get() {
8791
8892 public synchronized T get (int lastUsedDocumentId ) {
8993 T n = get ();
90- n .lastUsedDocumentId = Math .max (n .lastUsedDocumentId , lastUsedDocumentId );
94+
95+ if (n != null ) {
96+ n .lastUsedDocumentId = Math .max (n .lastUsedDocumentId , lastUsedDocumentId );
97+ }
9198 return n ;
9299 }
93100
@@ -141,6 +148,12 @@ private void reactivate() {
141148 assert model .suspensionHook != null ;
142149
143150 byte [] data = model .suspensionHook .retrieve (id );
151+ if (data == null ) {
152+ log .warn ("Tried to reactivate deleted node!" );
153+ markedDeleted = true ;
154+ return ;
155+ }
156+
144157 ByteArrayInputStream bais = new ByteArrayInputStream (data );
145158 try (
146159 GZIPInputStream gzipis = new GZIPInputStream (bais );
@@ -166,7 +179,13 @@ public void delete(Set<String> modelLabels) {
166179
167180 n .delete (modelLabels );
168181
169- model .suspensionHook .delete (id );
182+ // model.removeProvider(this);
183+ model .suspensionHook .delete (n .getLabel (), id );
184+ markedDeleted = true ;
185+ }
186+
187+ public boolean isMarkedDeleted () {
188+ return markedDeleted ;
170189 }
171190
172191 @ Override
0 commit comments