Skip to content

Commit 8eaf40e

Browse files
authored
Merge pull request #829 from HubSpot/fix-race-condition
[Eager Execution] Fix race condition in deferred AstNode evaluation
2 parents 2060c65 + 56cf6ca commit 8eaf40e

20 files changed

+63
-151
lines changed

src/main/java/com/hubspot/jinjava/Jinjava.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ public Jinjava(JinjavaConfig globalConfig) {
9797
TreeBuilder.class.getName(),
9898
EagerExtendedSyntaxBuilder.class.getName()
9999
);
100+
eagerExpConfig.setProperty(ExpressionFactoryImpl.PROP_CACHE_SIZE, "0");
100101

101102
TypeConverter converter = new TruthyTypeConverter();
102103
this.expressionFactory = new ExpressionFactoryImpl(expConfig, converter);

src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstBinary.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,6 @@ public void setEvalResult(Object evalResult) {
8282
hasEvalResult = true;
8383
}
8484

85-
@Override
86-
public void clearEvalResult() {
87-
evalResult = null;
88-
hasEvalResult = false;
89-
left.clearEvalResult();
90-
right.clearEvalResult();
91-
}
92-
9385
@Override
9486
public boolean hasEvalResult() {
9587
return hasEvalResult;

src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstBracket.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,6 @@ public void setEvalResult(Object evalResult) {
4646
hasEvalResult = true;
4747
}
4848

49-
@Override
50-
public void clearEvalResult() {
51-
evalResult = null;
52-
hasEvalResult = false;
53-
((EvalResultHolder) prefix).clearEvalResult();
54-
if (property != null) {
55-
((EvalResultHolder) property).clearEvalResult();
56-
}
57-
}
58-
5949
@Override
6050
public boolean hasEvalResult() {
6151
return hasEvalResult;

src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstChoice.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,6 @@ public void setEvalResult(Object evalResult) {
6161
hasEvalResult = true;
6262
}
6363

64-
@Override
65-
public void clearEvalResult() {
66-
evalResult = null;
67-
hasEvalResult = false;
68-
question.clearEvalResult();
69-
yes.clearEvalResult();
70-
no.clearEvalResult();
71-
}
72-
7364
@Override
7465
public boolean hasEvalResult() {
7566
return hasEvalResult;

src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstDict.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -96,23 +96,6 @@ public void setEvalResult(Object evalResult) {
9696
hasEvalResult = true;
9797
}
9898

99-
@Override
100-
public void clearEvalResult() {
101-
evalResult = null;
102-
hasEvalResult = false;
103-
104-
dict.forEach(
105-
(key, value) -> {
106-
if (key instanceof EvalResultHolder) {
107-
((EvalResultHolder) key).clearEvalResult();
108-
}
109-
if (value instanceof EvalResultHolder) {
110-
((EvalResultHolder) value).clearEvalResult();
111-
}
112-
}
113-
);
114-
}
115-
11699
@Override
117100
public boolean hasEvalResult() {
118101
return hasEvalResult;

src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstDot.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,6 @@ public void setEvalResult(Object evalResult) {
7272
hasEvalResult = true;
7373
}
7474

75-
@Override
76-
public void clearEvalResult() {
77-
evalResult = null;
78-
hasEvalResult = false;
79-
base.clearEvalResult();
80-
}
81-
8275
@Override
8376
public boolean hasEvalResult() {
8477
return hasEvalResult;

src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstIdentifier.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,6 @@ public void setEvalResult(Object evalResult) {
3333
hasEvalResult = true;
3434
}
3535

36-
@Override
37-
public void clearEvalResult() {
38-
evalResult = null;
39-
hasEvalResult = false;
40-
}
41-
4236
@Override
4337
public boolean hasEvalResult() {
4438
return hasEvalResult;

src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstList.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,6 @@ public void setEvalResult(Object evalResult) {
3535
hasEvalResult = true;
3636
}
3737

38-
@Override
39-
public void clearEvalResult() {
40-
evalResult = null;
41-
hasEvalResult = false;
42-
for (int i = 0; i < elements.getCardinality(); i++) {
43-
((EvalResultHolder) elements.getChild(i)).clearEvalResult();
44-
}
45-
}
46-
4738
@Override
4839
public boolean hasEvalResult() {
4940
return hasEvalResult;

src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstMacroFunction.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,16 +90,6 @@ public void setEvalResult(Object evalResult) {
9090
hasEvalResult = true;
9191
}
9292

93-
@Override
94-
public void clearEvalResult() {
95-
evalResult = null;
96-
hasEvalResult = false;
97-
params.clearEvalResult();
98-
for (int i = 0; i < ((AstParameters) params).getCardinality(); i++) {
99-
((EvalResultHolder) ((AstParameters) params).getChild(i)).clearEvalResult();
100-
}
101-
}
102-
10393
@Override
10494
public boolean hasEvalResult() {
10595
return hasEvalResult;

src/main/java/com/hubspot/jinjava/el/ext/eager/EagerAstMethod.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,6 @@ public void setEvalResult(Object evalResult) {
5959
hasEvalResult = true;
6060
}
6161

62-
@Override
63-
public void clearEvalResult() {
64-
evalResult = null;
65-
hasEvalResult = false;
66-
property.clearEvalResult();
67-
params.clearEvalResult();
68-
}
69-
7062
@Override
7163
public boolean hasEvalResult() {
7264
return hasEvalResult;

0 commit comments

Comments
 (0)