Skip to content

Commit 423d4e8

Browse files
authored
Merge pull request #317 from korpling/fix-apply-update-issue
Fix apply update issue
2 parents 23a4f7b + 29beab3 commit 423d4e8

9 files changed

Lines changed: 551 additions & 17 deletions

File tree

.github/workflows/release.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ on:
4747
jobs:
4848
# Run 'cargo dist plan' (or host) to determine what tasks we need to do
4949
plan:
50-
runs-on: "ubuntu-20.04"
50+
runs-on: "ubuntu-22.04"
5151
outputs:
5252
val: ${{ steps.plan.outputs.manifest }}
5353
tag: ${{ !github.event.pull_request && github.ref_name || '' }}
@@ -160,7 +160,7 @@ jobs:
160160
needs:
161161
- plan
162162
- build-local-artifacts
163-
runs-on: "ubuntu-20.04"
163+
runs-on: "ubuntu-22.04"
164164
env:
165165
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
166166
BUILD_MANIFEST_NAME: target/distrib/global-dist-manifest.json
@@ -210,7 +210,7 @@ jobs:
210210
if: ${{ always() && needs.plan.outputs.publishing == 'true' && (needs.build-global-artifacts.result == 'skipped' || needs.build-global-artifacts.result == 'success') && (needs.build-local-artifacts.result == 'skipped' || needs.build-local-artifacts.result == 'success') }}
211211
env:
212212
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
213-
runs-on: "ubuntu-20.04"
213+
runs-on: "ubuntu-22.04"
214214
outputs:
215215
val: ${{ steps.host.outputs.manifest }}
216216
steps:
@@ -274,7 +274,7 @@ jobs:
274274
# still allowing individual publish jobs to skip themselves (for prereleases).
275275
# "host" however must run to completion, no skipping allowed!
276276
if: ${{ always() && needs.host.result == 'success' }}
277-
runs-on: "ubuntu-20.04"
277+
runs-on: "ubuntu-22.04"
278278
env:
279279
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
280280
steps:

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
55

66
## [Unreleased]
77

8+
## Fixed
9+
10+
- Crash could occur when finding inversed connected nodes in PrePost graph
11+
storage due to a subtraction resulting in negative number.
12+
813
## [3.7.1] - 2025-04-14
914

1015
### Fixed

Cargo.toml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,18 @@ cargo-dist-version = "0.22.1"
1717
ci = "github"
1818
# The installers to generate for each app
1919
installers = []
20-
# Target platforms to build apps for (Rust target-triple syntax)
21-
targets = ["aarch64-apple-darwin", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu", "x86_64-pc-windows-msvc"]
2220
# Which actions to run on pull requests
2321
pr-run-mode = "plan"
22+
# Target platforms to build apps for (Rust target-triple syntax)
23+
targets = [
24+
"aarch64-apple-darwin",
25+
"x86_64-apple-darwin",
26+
"x86_64-unknown-linux-gnu",
27+
"x86_64-pc-windows-msvc",
28+
]
29+
[workspace.metadata.dist.github-custom-runners]
30+
global = "ubuntu-22.04"
31+
x86_64-unknown-linux-gnu = "ubuntu-22.04"
2432

2533
# Use release optimization of some of the performance sensitive crates even for debug builds.
2634
# This allows faster builds and debugging of our own code, while balancing performance.

core/src/graph/storage/prepost.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -345,13 +345,16 @@ where
345345
root.pre.to_usize(),
346346
root.post.to_usize(),
347347
) {
348-
let diff_level = root_level - current_level;
349-
if current_pre <= root_pre
350-
&& current_post >= root_post
351-
&& min_distance <= diff_level
352-
&& diff_level <= max_distance
353-
{
354-
Some(*current_node)
348+
if let Some(diff_level) = root_level.checked_sub(current_level) {
349+
if current_pre <= root_pre
350+
&& current_post >= root_post
351+
&& min_distance <= diff_level
352+
&& diff_level <= max_distance
353+
{
354+
Some(*current_node)
355+
} else {
356+
None
357+
}
355358
} else {
356359
None
357360
}

graphannis/src/annis/db/aql/model.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,9 +195,9 @@ impl AQLUpdateGraphIndex {
195195
.map(|gs| gs.as_edgecontainer())
196196
.collect();
197197

198-
let union = UnionEdgeContainer::new(containers);
198+
let union_container = UnionEdgeContainer::new(containers);
199199

200-
let dfs = CycleSafeDFS::new_inverse(&union, node, 0, usize::MAX);
200+
let dfs = CycleSafeDFS::new_inverse(&union_container, node, 0, usize::MAX);
201201
for step in dfs {
202202
let step = step?;
203203
self.invalid_nodes.insert(step.node, true)?;
Lines changed: 206 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,206 @@
1+
---
2+
source: graphannis/src/annis/db/aql/model/tests.rs
3+
expression: "String::from_utf8_lossy(&output)"
4+
---
5+
<?xml version="1.0" encoding="UTF-8"?>
6+
<graphml>
7+
<key id="k0" for="node" attr.name="syntax::cat" attr.type="string"/>
8+
<key id="k1" for="node" attr.name="annis::doc" attr.type="string"/>
9+
<key id="k2" for="node" attr.name="annis::layer" attr.type="string"/>
10+
<key id="k3" for="node" attr.name="annis::node_type" attr.type="string"/>
11+
<key id="k4" for="node" attr.name="default_ns::pos" attr.type="string"/>
12+
<key id="k5" for="node" attr.name="annis::tok" attr.type="string"/>
13+
<key id="k6" for="node" attr.name="annis::tok-whitespace-before" attr.type="string"/>
14+
<graph edgedefault="directed" parse.order="nodesfirst" parse.nodeids="free" parse.edgeids="canonical">
15+
<node id="single_sentence">
16+
<data key="k3">corpus</data>
17+
</node>
18+
<node id="single_sentence/zossen">
19+
<data key="k1">zossen</data>
20+
<data key="k3">corpus</data>
21+
</node>
22+
<node id="single_sentence/zossen#text">
23+
<data key="k3">datasource</data>
24+
</node>
25+
<node id="single_sentence/zossen#n1">
26+
<data key="k0">ROOT</data>
27+
<data key="k2">syntax</data>
28+
<data key="k3">node</data>
29+
</node>
30+
<node id="single_sentence/zossen#n2">
31+
<data key="k0">S</data>
32+
<data key="k2">syntax</data>
33+
<data key="k3">node</data>
34+
</node>
35+
<node id="single_sentence/zossen#n3">
36+
<data key="k0">NP</data>
37+
<data key="k2">syntax</data>
38+
<data key="k3">node</data>
39+
</node>
40+
<node id="single_sentence/zossen#t1">
41+
<data key="k2">default_layer</data>
42+
<data key="k3">node</data>
43+
<data key="k4">ART</data>
44+
<data key="k5">Die</data>
45+
</node>
46+
<node id="single_sentence/zossen#t2">
47+
<data key="k2">default_layer</data>
48+
<data key="k3">node</data>
49+
<data key="k4">NN</data>
50+
<data key="k5">Jugendlichen</data>
51+
<data key="k6"> </data>
52+
</node>
53+
<node id="single_sentence/zossen#n4">
54+
<data key="k0">PP</data>
55+
<data key="k2">syntax</data>
56+
<data key="k3">node</data>
57+
</node>
58+
<node id="single_sentence/zossen#t3">
59+
<data key="k2">default_layer</data>
60+
<data key="k3">node</data>
61+
<data key="k4">APPR</data>
62+
<data key="k5">in</data>
63+
<data key="k6"> </data>
64+
</node>
65+
<node id="single_sentence/zossen#t4">
66+
<data key="k2">default_layer</data>
67+
<data key="k3">node</data>
68+
<data key="k4">NE</data>
69+
<data key="k5">Zossen</data>
70+
<data key="k6"> </data>
71+
</node>
72+
<node id="single_sentence/zossen#t5">
73+
<data key="k2">default_layer</data>
74+
<data key="k3">node</data>
75+
<data key="k4">VMFIN</data>
76+
<data key="k5">wollen</data>
77+
<data key="k6"> </data>
78+
</node>
79+
<node id="single_sentence/zossen#n5">
80+
<data key="k0">NP</data>
81+
<data key="k2">syntax</data>
82+
<data key="k3">node</data>
83+
</node>
84+
<node id="single_sentence/zossen#t6">
85+
<data key="k2">default_layer</data>
86+
<data key="k3">node</data>
87+
<data key="k4">ART</data>
88+
<data key="k5">ein</data>
89+
<data key="k6"> </data>
90+
</node>
91+
<node id="single_sentence/zossen#t7">
92+
<data key="k2">default_layer</data>
93+
<data key="k3">node</data>
94+
<data key="k4">NN</data>
95+
<data key="k5">Musikcafé</data>
96+
<data key="k6"> </data>
97+
</node>
98+
<node id="single_sentence/zossen#t8">
99+
<data key="k2">default_layer</data>
100+
<data key="k3">node</data>
101+
<data key="k4">$.</data>
102+
<data key="k5">.</data>
103+
<data key="k6"> </data>
104+
</node>
105+
<node id="single_sentence/zossen#newToken">
106+
<data key="k3">node</data>
107+
<data key="k5"></data>
108+
</node>
109+
<edge id="e0" source="single_sentence/zossen#n1" target="single_sentence/zossen#n2" label="Dominance/syntax/">
110+
</edge>
111+
<edge id="e1" source="single_sentence/zossen#n1" target="single_sentence/zossen#t8" label="Dominance/syntax/">
112+
</edge>
113+
<edge id="e2" source="single_sentence/zossen#n2" target="single_sentence/zossen#n3" label="Dominance/syntax/">
114+
</edge>
115+
<edge id="e3" source="single_sentence/zossen#n2" target="single_sentence/zossen#t5" label="Dominance/syntax/">
116+
</edge>
117+
<edge id="e4" source="single_sentence/zossen#n2" target="single_sentence/zossen#n5" label="Dominance/syntax/">
118+
</edge>
119+
<edge id="e5" source="single_sentence/zossen#n3" target="single_sentence/zossen#t1" label="Dominance/syntax/">
120+
</edge>
121+
<edge id="e6" source="single_sentence/zossen#n3" target="single_sentence/zossen#t2" label="Dominance/syntax/">
122+
</edge>
123+
<edge id="e7" source="single_sentence/zossen#n3" target="single_sentence/zossen#n4" label="Dominance/syntax/">
124+
</edge>
125+
<edge id="e8" source="single_sentence/zossen#n4" target="single_sentence/zossen#t3" label="Dominance/syntax/">
126+
</edge>
127+
<edge id="e9" source="single_sentence/zossen#n4" target="single_sentence/zossen#t4" label="Dominance/syntax/">
128+
</edge>
129+
<edge id="e10" source="single_sentence/zossen#n5" target="single_sentence/zossen#t6" label="Dominance/syntax/">
130+
</edge>
131+
<edge id="e11" source="single_sentence/zossen#n5" target="single_sentence/zossen#t7" label="Dominance/syntax/">
132+
</edge>
133+
<edge id="e12" source="single_sentence/zossen#n1" target="single_sentence/zossen#n2" label="Dominance/syntax/edge">
134+
</edge>
135+
<edge id="e13" source="single_sentence/zossen#n1" target="single_sentence/zossen#t8" label="Dominance/syntax/edge">
136+
</edge>
137+
<edge id="e14" source="single_sentence/zossen#n2" target="single_sentence/zossen#n3" label="Dominance/syntax/edge">
138+
</edge>
139+
<edge id="e15" source="single_sentence/zossen#n2" target="single_sentence/zossen#t5" label="Dominance/syntax/edge">
140+
</edge>
141+
<edge id="e16" source="single_sentence/zossen#n2" target="single_sentence/zossen#n5" label="Dominance/syntax/edge">
142+
</edge>
143+
<edge id="e17" source="single_sentence/zossen#n3" target="single_sentence/zossen#t1" label="Dominance/syntax/edge">
144+
</edge>
145+
<edge id="e18" source="single_sentence/zossen#n3" target="single_sentence/zossen#t2" label="Dominance/syntax/edge">
146+
</edge>
147+
<edge id="e19" source="single_sentence/zossen#n3" target="single_sentence/zossen#n4" label="Dominance/syntax/edge">
148+
</edge>
149+
<edge id="e20" source="single_sentence/zossen#n4" target="single_sentence/zossen#t3" label="Dominance/syntax/edge">
150+
</edge>
151+
<edge id="e21" source="single_sentence/zossen#n4" target="single_sentence/zossen#t4" label="Dominance/syntax/edge">
152+
</edge>
153+
<edge id="e22" source="single_sentence/zossen#n5" target="single_sentence/zossen#t6" label="Dominance/syntax/edge">
154+
</edge>
155+
<edge id="e23" source="single_sentence/zossen#n5" target="single_sentence/zossen#t7" label="Dominance/syntax/edge">
156+
</edge>
157+
<edge id="e24" source="single_sentence/zossen#t1" target="single_sentence/zossen#t2" label="Ordering/annis/">
158+
</edge>
159+
<edge id="e25" source="single_sentence/zossen#t2" target="single_sentence/zossen#t3" label="Ordering/annis/">
160+
</edge>
161+
<edge id="e26" source="single_sentence/zossen#t3" target="single_sentence/zossen#t4" label="Ordering/annis/">
162+
</edge>
163+
<edge id="e27" source="single_sentence/zossen#t4" target="single_sentence/zossen#newToken" label="Ordering/annis/">
164+
</edge>
165+
<edge id="e28" source="single_sentence/zossen#t5" target="single_sentence/zossen#t6" label="Ordering/annis/">
166+
</edge>
167+
<edge id="e29" source="single_sentence/zossen#t6" target="single_sentence/zossen#t7" label="Ordering/annis/">
168+
</edge>
169+
<edge id="e30" source="single_sentence/zossen#t7" target="single_sentence/zossen#t8" label="Ordering/annis/">
170+
</edge>
171+
<edge id="e31" source="single_sentence/zossen#newToken" target="single_sentence/zossen#t5" label="Ordering/annis/">
172+
</edge>
173+
<edge id="e32" source="single_sentence/zossen" target="single_sentence" label="PartOf/annis/">
174+
</edge>
175+
<edge id="e33" source="single_sentence/zossen#text" target="single_sentence/zossen" label="PartOf/annis/">
176+
</edge>
177+
<edge id="e34" source="single_sentence/zossen#n1" target="single_sentence/zossen#text" label="PartOf/annis/">
178+
</edge>
179+
<edge id="e35" source="single_sentence/zossen#n2" target="single_sentence/zossen#text" label="PartOf/annis/">
180+
</edge>
181+
<edge id="e36" source="single_sentence/zossen#n3" target="single_sentence/zossen#text" label="PartOf/annis/">
182+
</edge>
183+
<edge id="e37" source="single_sentence/zossen#t1" target="single_sentence/zossen#text" label="PartOf/annis/">
184+
</edge>
185+
<edge id="e38" source="single_sentence/zossen#t2" target="single_sentence/zossen#text" label="PartOf/annis/">
186+
</edge>
187+
<edge id="e39" source="single_sentence/zossen#n4" target="single_sentence/zossen#text" label="PartOf/annis/">
188+
</edge>
189+
<edge id="e40" source="single_sentence/zossen#t3" target="single_sentence/zossen#text" label="PartOf/annis/">
190+
</edge>
191+
<edge id="e41" source="single_sentence/zossen#t4" target="single_sentence/zossen#text" label="PartOf/annis/">
192+
</edge>
193+
<edge id="e42" source="single_sentence/zossen#t5" target="single_sentence/zossen#text" label="PartOf/annis/">
194+
</edge>
195+
<edge id="e43" source="single_sentence/zossen#n5" target="single_sentence/zossen#text" label="PartOf/annis/">
196+
</edge>
197+
<edge id="e44" source="single_sentence/zossen#t6" target="single_sentence/zossen#text" label="PartOf/annis/">
198+
</edge>
199+
<edge id="e45" source="single_sentence/zossen#t7" target="single_sentence/zossen#text" label="PartOf/annis/">
200+
</edge>
201+
<edge id="e46" source="single_sentence/zossen#t8" target="single_sentence/zossen#text" label="PartOf/annis/">
202+
</edge>
203+
<edge id="e47" source="single_sentence/zossen#newToken" target="single_sentence/zossen#text" label="PartOf/annis/">
204+
</edge>
205+
</graph>
206+
</graphml>

0 commit comments

Comments
 (0)