Skip to content

Commit 140666f

Browse files
author
dominic.abruzzo
committed
Merge remote-tracking branch 'origin/stable-1.4.0' into stable-1.4.0
# Conflicts: # src/main/java/network/aika/Provider.java
2 parents c9324a1 + b0e65f1 commit 140666f

File tree

8 files changed

+42
-10
lines changed

8 files changed

+42
-10
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<groupId>org.aika-software</groupId>
66
<artifactId>aika</artifactId>
77
<packaging>jar</packaging>
8-
<version>1.4.5-SNAPSHOT</version>
8+
<version>1.4.6</version>
99
<name>aika</name>
1010
<url>http://aika.network</url>
1111
<description>An artificial intelligence for knowledge acquisition</description>

src/main/java/network/aika/AbstractNode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ public Set<String> getModelLabels() {
4747
}
4848

4949
public void addModelLabel(String modelLabel) {
50-
getModelLabels().add(modelLabel);
50+
if(modelLabel != null) {
51+
getModelLabels().add(modelLabel);
52+
}
5153
}
5254

5355
public P getProvider() {

src/main/java/network/aika/Provider.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package network.aika;
22

33

4+
import network.aika.neuron.INeuron;
5+
import network.aika.neuron.Neuron;
46
import org.slf4j.Logger;
57
import 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

src/main/java/network/aika/SuspensionHook.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public interface SuspensionHook {
3737

3838
byte[] retrieve(int id);
3939

40-
void delete(int id);
40+
void delete(String label, int id);
4141

4242
Iterable<Integer> getAllNodeIds();
4343
}

src/main/java/network/aika/lattice/Node.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,10 @@ protected void propagateToOrNode(NodeActivation inputAct) {
266266
lock.acquireReadLock();
267267
if (orChildren != null) {
268268
for (OrEntry oe : orChildren) {
269-
oe.child.get(doc).addActivation(oe, inputAct);
269+
OrNode on = oe.child.get(doc);
270+
if(on != null) {
271+
on.addActivation(oe, inputAct);
272+
}
270273
}
271274
}
272275
} finally {
@@ -299,7 +302,9 @@ public void addActivation(A act) {
299302

300303

301304
public void remove() {
302-
assert !isRemoved;
305+
if(isRemoved) {
306+
return;
307+
}
303308

304309
lock.acquireWriteLock();
305310
setModified();

src/main/java/network/aika/lattice/OrNode.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ protected void addActivation(OrEntry oe, NodeActivation inputAct) {
8585

8686
Document doc = inputAct.getDocument();
8787
INeuron n = outputNeuron.get(doc);
88+
if(n == null) return;
8889

8990
Activation act = lookupActivation(ol, l -> {
9091
Synapse s = l.getSynapse();
@@ -135,9 +136,12 @@ private Activation lookupActivation(OrActivation.Link ol, Predicate<Link> filter
135136
.orElse(null);
136137
}
137138
} else {
139+
INeuron n = outputNeuron.get();
140+
if(n == null) return null;
141+
138142
existingAct = rel
139143
.invert()
140-
.getActivations(outputNeuron.get(), l.getInput())
144+
.getActivations(n, l.getInput())
141145
.findFirst()
142146
.orElse(null);
143147
}
@@ -235,7 +239,7 @@ void removeParents(Set<String> modelLabels) {
235239
pn.removeOrChild(oe);
236240
pn.setModified();
237241

238-
pp.delete(modelLabels);
242+
// pp.delete(modelLabels);
239243
}
240244
andParents.clear();
241245
}

src/main/java/network/aika/neuron/INeuron.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -742,6 +742,8 @@ public void reactivate() {
742742
@Override
743743
public void delete(Set<String> modelLabels) {
744744
new ArrayList<>(getInputSynapses())
745+
.stream()
746+
.filter(s -> !s.getInput().isMarkedDeleted())
745747
.forEach(s -> {
746748
s.unlink();
747749
s.getInput().delete(modelLabels);

src/test/java/network/aika/network/SuspensionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public byte[] retrieve(int id) {
150150
}
151151

152152
@Override
153-
public void delete(int id) {
153+
public void delete(String label, int id) {
154154
storage.remove(id);
155155
}
156156

0 commit comments

Comments
 (0)