Skip to content

Commit 885bcaa

Browse files
authored
Merge pull request #181 from bugsnag/release-v3.6.4
Release v3.6.4
2 parents b163992 + a762451 commit 885bcaa

65 files changed

Lines changed: 646 additions & 587 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.buildkite/pipeline.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,36 @@ steps:
44
plugins:
55
- docker-compose#v3.7.0:
66
run: license-audit
7+
8+
- label: ':docker: Assemble project'
9+
key: 'java-jvm-build'
10+
timeout_in_minutes: 30
11+
plugins:
12+
- docker-compose#v3.7.0:
13+
run: java-common
14+
command: './gradlew :bugsnag:assemble :bugsnag-spring:assemble'
15+
16+
- label: ':docker: Run JVM tests'
17+
key: 'java-jvm-tests'
18+
timeout_in_minutes: 30
19+
plugins:
20+
- docker-compose#v3.7.0:
21+
run: java-common
22+
command: './gradlew check test'
23+
24+
- label: ':docker: Mazerunner tests batch 1'
25+
key: 'java-mazerunner-tests-1'
26+
timeout_in_minutes: 30
27+
plugins:
28+
- docker-compose#v3.7.0:
29+
run: java-mazerunner
30+
command: 'bundle exec maze-runner --exclude=features/[^a-m].*.feature'
31+
32+
- label: ':docker: Mazerunner tests batch 2'
33+
key: 'java-mazerunner-tests-2'
34+
timeout_in_minutes: 30
35+
plugins:
36+
- docker-compose#v3.7.0:
37+
pull: java-mazerunner
38+
run: java-mazerunner
39+
command: 'bundle exec maze-runner --exclude=features/[^n-z].*.feature'

.travis.yml

Lines changed: 0 additions & 40 deletions
This file was deleted.

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# Changelog
22

3+
## 3.6.4 (2022-07-12)
4+
5+
* Support log messages that use `{}` formatting
6+
[#178](https://github.com/bugsnag/bugsnag-java/pull/178)
7+
8+
* Fix potential hang when resolving DNS hostname
9+
[#179](https://github.com/bugsnag/bugsnag-java/pull/179)
10+
11+
* Bump Jackson from 2.12.5 and JUnit from 4.12 for critical vulnerability fixes
12+
[#180](https://github.com/bugsnag/bugsnag-java/pull/180)
13+
314
## 3.6.3 (2021-10-12)
415

516
* Bump Jackson from 2.9.1 for critical vulnerability fixes

Gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
source 'https://rubygems.org'
22

3-
gem 'bugsnag-maze-runner', :git => 'https://github.com/bugsnag/maze-runner', :branch => 'v1'
3+
gem 'bugsnag-maze-runner', git: 'https://github.com/bugsnag/maze-runner', tag: 'v6.8.0'
44
gem 'os'

Gemfile.lock

Lines changed: 88 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,102 @@
11
GIT
22
remote: https://github.com/bugsnag/maze-runner
3-
revision: ba232513f88c18149ab5b4595c9f5a81174bdee5
3+
revision: fe12189f83aad154f54221ee0fcd41b483d3c0d1
4+
tag: v6.8.0
45
specs:
5-
bugsnag-maze-runner (1.0.0)
6-
cucumber (~> 3.1.0)
7-
cucumber-expressions (= 5.0.15)
8-
minitest (~> 5.0)
6+
bugsnag-maze-runner (6.8.0)
7+
appium_lib (~> 11.2.0)
8+
bugsnag (~> 6.24)
9+
cucumber (~> 7.1)
10+
cucumber-expressions (~> 6.0.0)
11+
curb (~> 0.9.6)
12+
optimist (~> 3.0.1)
913
os (~> 1.0.0)
10-
rack (~> 2.0.0)
11-
rake (~> 12.3.0)
12-
test-unit (~> 3.2.0)
14+
rake (~> 12.3.3)
15+
rubyzip (~> 2.3.2)
16+
selenium-webdriver (~> 3.11)
17+
test-unit (~> 3.5.2)
18+
webrick (~> 1.7.0)
1319

1420
GEM
1521
remote: https://rubygems.org/
1622
specs:
17-
backports (3.11.4)
18-
builder (3.2.3)
19-
cucumber (3.1.0)
20-
builder (>= 2.1.2)
21-
cucumber-core (~> 3.1.0)
22-
cucumber-expressions (~> 5.0.4)
23-
cucumber-wire (~> 0.0.1)
24-
diff-lcs (~> 1.3)
25-
gherkin (~> 5.0)
26-
multi_json (>= 1.7.5, < 2.0)
27-
multi_test (>= 0.1.2)
28-
cucumber-core (3.1.0)
29-
backports (>= 3.8.0)
30-
cucumber-tag_expressions (~> 1.1.0)
31-
gherkin (>= 5.0.0)
32-
cucumber-expressions (5.0.15)
33-
cucumber-tag_expressions (1.1.1)
34-
cucumber-wire (0.0.1)
35-
diff-lcs (1.3)
36-
gherkin (5.1.0)
37-
minitest (5.11.3)
38-
multi_json (1.13.1)
23+
appium_lib (11.2.0)
24+
appium_lib_core (~> 4.1)
25+
nokogiri (~> 1.8, >= 1.8.1)
26+
tomlrb (~> 1.1)
27+
appium_lib_core (4.7.1)
28+
faye-websocket (~> 0.11.0)
29+
selenium-webdriver (~> 3.14, >= 3.14.1)
30+
bugsnag (6.24.1)
31+
concurrent-ruby (~> 1.0)
32+
builder (3.2.4)
33+
childprocess (3.0.0)
34+
concurrent-ruby (1.1.9)
35+
cucumber (7.1.0)
36+
builder (~> 3.2, >= 3.2.4)
37+
cucumber-core (~> 10.1, >= 10.1.0)
38+
cucumber-create-meta (~> 6.0, >= 6.0.1)
39+
cucumber-cucumber-expressions (~> 14.0, >= 14.0.0)
40+
cucumber-gherkin (~> 22.0, >= 22.0.0)
41+
cucumber-html-formatter (~> 17.0, >= 17.0.0)
42+
cucumber-messages (~> 17.1, >= 17.1.1)
43+
cucumber-wire (~> 6.2, >= 6.2.0)
44+
diff-lcs (~> 1.4, >= 1.4.4)
45+
mime-types (~> 3.3, >= 3.3.1)
46+
multi_test (~> 0.1, >= 0.1.2)
47+
sys-uname (~> 1.2, >= 1.2.2)
48+
cucumber-core (10.1.0)
49+
cucumber-gherkin (~> 22.0, >= 22.0.0)
50+
cucumber-messages (~> 17.1, >= 17.1.1)
51+
cucumber-tag-expressions (~> 4.0, >= 4.0.2)
52+
cucumber-create-meta (6.0.4)
53+
cucumber-messages (~> 17.1, >= 17.1.1)
54+
sys-uname (~> 1.2, >= 1.2.2)
55+
cucumber-cucumber-expressions (14.0.0)
56+
cucumber-expressions (6.0.1)
57+
cucumber-gherkin (22.0.0)
58+
cucumber-messages (~> 17.1, >= 17.1.1)
59+
cucumber-html-formatter (17.0.0)
60+
cucumber-messages (~> 17.1, >= 17.1.0)
61+
cucumber-messages (17.1.1)
62+
cucumber-tag-expressions (4.1.0)
63+
cucumber-wire (6.2.0)
64+
cucumber-core (~> 10.1, >= 10.1.0)
65+
cucumber-cucumber-expressions (~> 14.0, >= 14.0.0)
66+
cucumber-messages (~> 17.1, >= 17.1.1)
67+
curb (0.9.11)
68+
diff-lcs (1.5.0)
69+
eventmachine (1.2.7)
70+
faye-websocket (0.11.1)
71+
eventmachine (>= 0.12.0)
72+
websocket-driver (>= 0.5.1)
73+
ffi (1.15.4)
74+
mime-types (3.4.1)
75+
mime-types-data (~> 3.2015)
76+
mime-types-data (3.2021.1115)
77+
mini_portile2 (2.6.1)
3978
multi_test (0.1.2)
79+
nokogiri (1.12.5)
80+
mini_portile2 (~> 2.6.1)
81+
racc (~> 1.4)
82+
optimist (3.0.1)
4083
os (1.0.0)
41-
power_assert (1.1.3)
42-
rack (2.0.6)
43-
rake (12.3.1)
44-
test-unit (3.2.8)
84+
power_assert (2.0.1)
85+
racc (1.6.0)
86+
rake (12.3.3)
87+
rubyzip (2.3.2)
88+
selenium-webdriver (3.142.7)
89+
childprocess (>= 0.5, < 4.0)
90+
rubyzip (>= 1.2.2)
91+
sys-uname (1.2.2)
92+
ffi (~> 1.1)
93+
test-unit (3.5.3)
4594
power_assert
95+
tomlrb (1.3.0)
96+
webrick (1.7.0)
97+
websocket-driver (0.7.5)
98+
websocket-extensions (>= 0.1.0)
99+
websocket-extensions (0.1.5)
46100

47101
PLATFORMS
48102
ruby

bugsnag-spring/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ dependencies {
2020
compileOnly "org.springframework.boot:spring-boot:${springBootVersion}"
2121
compileOnly "ch.qos.logback:logback-core:${logbackVersion}"
2222

23-
testCompile "junit:junit:4.12"
23+
testCompile "junit:junit:4.13.2"
2424
testCompile "javax.servlet:javax.servlet-api:${servletApiVersion}"
2525
testCompile "org.springframework.boot:spring-boot-starter-test:${springBootVersion}"
2626
testCompile "org.springframework.boot:spring-boot-starter-web:${springBootVersion}"

bugsnag/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ repositories {
1010
}
1111

1212
dependencies {
13-
compile "com.fasterxml.jackson.core:jackson-databind:2.12.5"
13+
compile "com.fasterxml.jackson.core:jackson-databind:2.13.3"
1414
compile "org.slf4j:slf4j-api:1.7.25"
1515
compileOnly "javax.servlet:javax.servlet-api:${servletApiVersion}"
1616
compileOnly("ch.qos.logback:logback-classic:${logbackVersion}") {
1717
exclude group: "org.slf4j"
1818
}
1919

20-
testCompile "junit:junit:4.12"
20+
testCompile "junit:junit:4.13.2"
2121
testCompile "org.slf4j:log4j-over-slf4j:1.7.25"
2222
testCompile "javax.servlet:javax.servlet-api:${servletApiVersion}"
2323
testCompile "org.mockito:mockito-core:2.10.0"

bugsnag/src/main/java/com/bugsnag/BugsnagAppender.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ public void beforeNotify(Report report) {
138138

139139
// Add some data from the logging event
140140
report.addToTab("Log event data",
141-
"Message", event.getMessage());
141+
"Message", event.getFormattedMessage());
142142
report.addToTab("Log event data",
143143
"Logger name", event.getLoggerName());
144144

bugsnag/src/main/java/com/bugsnag/Notifier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
class Notifier {
66

77
private static final String NOTIFIER_NAME = "Bugsnag Java";
8-
private static final String NOTIFIER_VERSION = "3.6.3";
8+
private static final String NOTIFIER_VERSION = "3.6.4";
99
private static final String NOTIFIER_URL = "https://github.com/bugsnag/bugsnag-java";
1010

1111
private String notifierName = NOTIFIER_NAME;

bugsnag/src/main/java/com/bugsnag/callbacks/DeviceCallback.java

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,18 @@
55
import java.net.InetAddress;
66
import java.net.UnknownHostException;
77
import java.util.Locale;
8+
import java.util.concurrent.Callable;
9+
import java.util.concurrent.ExecutionException;
10+
import java.util.concurrent.FutureTask;
11+
import java.util.concurrent.TimeUnit;
12+
import java.util.concurrent.TimeoutException;
813

914
public class DeviceCallback implements Callback {
1015

1116
private static volatile String hostname;
12-
private static transient volatile boolean hostnameInitialised;
17+
private static volatile boolean hostnameInitialised;
1318
private static final Object LOCK = new Object();
19+
private static final int HOSTNAME_LOOKUP_TIMEOUT = 10000;
1420

1521
/**
1622
* Memoises the hostname, as lookup can be expensive
@@ -39,17 +45,42 @@ private static String lookupHostname() {
3945
return hostname;
4046
}
4147

42-
// Resort to dns hostname lookup
48+
// Resort to dns hostname lookup with a timeout of HOSTNAME_LOOKUP_TIMEOUT,
49+
// as this can potentially take a very long time to resolve
50+
FutureTask<String> future = new FutureTask<String>(new Callable<String>() {
51+
@Override
52+
public String call() throws UnknownHostException {
53+
return InetAddress.getLocalHost().getHostName();
54+
}
55+
});
56+
Thread resolverThread = new Thread(future, "Hostname Resolver");
57+
resolverThread.setDaemon(true);
58+
resolverThread.start();
59+
4360
try {
44-
return InetAddress.getLocalHost().getHostName();
45-
} catch (UnknownHostException ex) {
61+
return future.get(HOSTNAME_LOOKUP_TIMEOUT, TimeUnit.MILLISECONDS);
62+
} catch (ExecutionException ex) {
63+
// Give up
64+
} catch (InterruptedException ex) {
65+
// Give up
66+
} catch (TimeoutException ex) {
4667
// Give up
4768
}
4869
return null;
4970
}
5071

72+
/**
73+
* Cache the hostname on a background thread to avoid blocking on initialization
74+
*/
5175
public static void initializeCache() {
52-
getHostnameValue();
76+
Thread hostnameLookup = new Thread("Hostname Lookup") {
77+
@Override
78+
public void run() {
79+
getHostnameValue();
80+
}
81+
};
82+
hostnameLookup.setDaemon(true);
83+
hostnameLookup.start();
5384
}
5485

5586
@Override

0 commit comments

Comments
 (0)