javacore-analyser 2.2.0.dev98__tar.gz → 2.2.0.dev113__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/CONTRIBUTING.md +5 -0
  2. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/Dockerfile +5 -2
  3. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/PKG-INFO +1 -1
  4. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/xml/report.xsl +5 -1
  5. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/xml/threads/thread.xsl +5 -1
  6. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/java_thread.py +13 -0
  7. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/thread_snapshot.py +14 -12
  8. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  9. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  10. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/.github/dco.yml +0 -0
  11. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/.gitignore +0 -0
  12. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/.travis.yml +0 -0
  13. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/CHANGELOG.md +0 -0
  14. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/CODE_OF_CONDUCT.md +0 -0
  15. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/LICENSE +0 -0
  16. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/MAINTAINERS.md +0 -0
  17. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/README.md +0 -0
  18. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/REQUIREMENTS.md +0 -0
  19. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/SECURITY.md +0 -0
  20. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/docs/ClassDiagram.png +0 -0
  21. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/docs/dom_example.py +0 -0
  22. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/pyproject.toml +0 -0
  23. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/requirements.txt +0 -0
  24. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/__init__.py +0 -0
  25. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/__main__.py +0 -0
  26. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/abstract_snapshot_collection.py +0 -0
  27. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/code_snapshot_collection.py +0 -0
  28. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/constants.py +0 -0
  29. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/expand.js +0 -0
  30. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/html/error.html +0 -0
  31. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/html/processing_data.html +0 -0
  32. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/jquery/chart.js +0 -0
  33. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/jquery/chartjs-adapter-date-fns.bundle.min.js +0 -0
  34. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/jquery/jq.css +0 -0
  35. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/jquery/jquery.mark.min.js +0 -0
  36. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/jquery/jquery.min.js +0 -0
  37. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/jquery/jquery.tablesorter.min.js +0 -0
  38. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/jquery/jquery.tablesorter.widgets.min.js +0 -0
  39. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/jquery/search.js +0 -0
  40. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/jquery/sorting.js +0 -0
  41. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/jquery/theme.blue.css +0 -0
  42. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/jquery/theme.default.min.css +0 -0
  43. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/jquery/wait2scripts.js +0 -0
  44. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/style.css +0 -0
  45. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/xml/index.xml +0 -0
  46. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/xml/javacores/javacore.xml +0 -0
  47. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/xml/javacores/javacore.xsl +0 -0
  48. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/data/xml/threads/thread.xml +0 -0
  49. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/har_file.py +0 -0
  50. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/javacore.py +0 -0
  51. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/javacore_analyser_batch.py +0 -0
  52. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/javacore_analyser_web.py +0 -0
  53. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/javacore_set.py +0 -0
  54. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/logging_utils.py +0 -0
  55. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/snapshot_collection.py +0 -0
  56. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/snapshot_collection_collection.py +0 -0
  57. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/stack_trace.py +0 -0
  58. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/stack_trace_element.py +0 -0
  59. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/stack_trace_kind.py +0 -0
  60. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/templates/index.html +0 -0
  61. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/tips.py +0 -0
  62. {javacore_analyser-2.2.0.dev98 → javacore_analyser-2.2.0.dev113}/src/javacore_analyser/verbose_gc.py +0 -0
@@ -104,6 +104,11 @@ or
104
104
 
105
105
  `docker build -t javacore-analyser .`
106
106
 
107
+ If you want to build a particular version, you need to add `--build-arg version=` argument, for example:
108
+ `podman build --build-arg version='==2.1' -t javacore-analyser .`
109
+ or
110
+ `podman build --build-arg version='<2.1' -t javacore-analyser .`
111
+
107
112
  To start the container:
108
113
  `podman run -it --rm --name javacore-analyser --mount type=bind,src="local-dir-on-fs",target=/reports -p 5001:5000 javacore-analyser`
109
114
 
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright IBM Corp. 2024 - 2024
2
+ # Copyright IBM Corp. 2024 - 2025
3
3
  # SPDX-License-Identifier: Apache-2.0
4
4
  #
5
5
 
@@ -13,5 +13,8 @@ EXPOSE 5000/tcp
13
13
  RUN mkdir /reports
14
14
  VOLUME ["/reports"]
15
15
 
16
- RUN ["pip", "install", "--no-cache-dir", "javacore-analyser"]
16
+ # As default we do not set the version to have the latest one for build.
17
+ ARG version=
18
+ #RUN ["pip", "install", "--no-cache-dir", "--root-user-action", "ignore", "javacore-analyser${version}"]
19
+ RUN pip install --no-cache-dir --root-user-action ignore javacore-analyser${version}
17
20
  CMD ["javacore_analyser_web", "--port=5000", "--reports-dir=/reports"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: javacore_analyser
3
- Version: 2.2.0.dev98
3
+ Version: 2.2.0.dev113
4
4
  Summary: The tool to review IBM Javacore files
5
5
  Project-URL: Homepage, https://github.com/IBM/javacore-analyser
6
6
  Project-URL: Issues, https://github.com/IBM/javacore-analyser/issues
@@ -533,6 +533,7 @@
533
533
  that may be reused for unrelated tasks. Two tasks with different thread names are therefore treated
534
534
  as separate threads for the purpose of this report, even if they are executed in the scope of the same
535
535
  Thread java object.
536
+ The address of the java Thread object is included for each thread. This corresponds to the address reported in Java heapdumps.
536
537
  The table can be sorted by clicking on any column header.
537
538
  The following information is displayed for each thread:
538
539
  <ul>
@@ -586,7 +587,9 @@
586
587
  <a>
587
588
  <xsl:attribute name="id"><xsl:value-of select="concat('toggle_thread_name',$i)"/></xsl:attribute>
588
589
  <xsl:attribute name="href"><xsl:value-of select="concat('javascript:expand_stack(stack',$i,',toggle_thread_name',$i,')')"/></xsl:attribute>
589
- <xsl:attribute name="class">expandit</xsl:attribute><xsl:value-of select="thread_name"/></a>
590
+ <xsl:attribute name="class">expandit</xsl:attribute>
591
+ <xsl:value-of select="thread_name"/>
592
+ </a>
590
593
  <a class="right" target="_blank">
591
594
  <xsl:attribute name="href">
592
595
  <xsl:value-of select="concat('threads/thread_', thread_hash, '.html')"/>
@@ -596,6 +599,7 @@
596
599
  <br/>
597
600
  <div style="display:none;" >
598
601
  <xsl:attribute name="id"><xsl:value-of select="concat('stack',$i)"/></xsl:attribute>
602
+ java/lang/Thread:<xsl:value-of select="thread_address"/>
599
603
  <xsl:for-each select="*[starts-with(name(), 'stack')]">
600
604
  <div>
601
605
  <xsl:choose>
@@ -33,7 +33,11 @@
33
33
  </div>
34
34
  <div class="content">
35
35
  <p class="right"><a href="../index.html"> Back to Main page </a></p>
36
- <h2>Wait Report for thread: <b><xsl:value-of select="thread_name"/></b></h2>
36
+ <h2>
37
+ Wait Report for thread: <b><xsl:value-of select="thread_name"/></b>
38
+ <br/>
39
+ java/lang/Thread:<xsl:value-of select="thread_address"/>
40
+ </h2>
37
41
  <xsl:choose>
38
42
  <xsl:when test="//javacore_count = 1">
39
43
  System resource utilization data cannot be calculated with only a single javacore.
@@ -8,6 +8,14 @@ from javacore_analyser.abstract_snapshot_collection import AbstractSnapshotColle
8
8
 
9
9
  class Thread(AbstractSnapshotCollection):
10
10
 
11
+ def __init__(self):
12
+ super().__init__()
13
+ self.thread_address = ""
14
+
15
+ def create(self, thread_snapshot):
16
+ super().create(thread_snapshot)
17
+ self.thread_address = thread_snapshot.thread_address
18
+
11
19
  def get_hash(self):
12
20
  id_str = self.name + str(self.id)
13
21
  hashcode = abs(hash(id_str))
@@ -26,6 +34,11 @@ class Thread(AbstractSnapshotCollection):
26
34
  name_node.appendChild(doc.createTextNode(self.name + " (" + str(self.id) + ")"))
27
35
  thread_node.appendChild(name_node)
28
36
 
37
+ # thread address
38
+ thread_address_node = doc.createElement("thread_address")
39
+ thread_address_node.appendChild(doc.createTextNode(self.thread_address))
40
+ thread_node.appendChild(thread_address_node)
41
+
29
42
  # hash
30
43
  hash_node = doc.createElement("thread_hash")
31
44
  hash_node.appendChild(doc.createTextNode(self.get_hash()))
@@ -21,6 +21,7 @@ class ThreadSnapshot:
21
21
  self.allocated_mem = 0
22
22
  self.name = None
23
23
  self.thread_id = None
24
+ self.thread_address = None
24
25
  self.thread = None
25
26
  self.javacore = None
26
27
  self.blocker = None
@@ -38,6 +39,7 @@ class ThreadSnapshot:
38
39
  snapshot.file = file
39
40
  snapshot.javacore = javacore
40
41
  snapshot.name = snapshot.get_thread_name(line)
42
+ snapshot.thread_address = snapshot.get_thread_address(line)
41
43
  snapshot.parse_state(line)
42
44
  snapshot.parse_snapshot_data()
43
45
  return snapshot
@@ -76,6 +78,18 @@ class ThreadSnapshot:
76
78
  name = name.translate(str.maketrans({"\01": "[SOH]"}))
77
79
  return name
78
80
 
81
+ def get_thread_address(self, line):
82
+ """ assuming line format:
83
+ 3XMTHREADINFO "Default Executor-thread-27781" J9VMThread:0x0000000009443300,
84
+ omrthread_t:0x000000A8B62C3758, java/lang/Thread:0x00000008432D4140, state:B, prio=5 """
85
+ match = re.search("(java/lang/Thread:)(0x[0-9a-fA-F]+)", line)
86
+ address = ""
87
+ if match: # native threads don't have an address
88
+ address = match.group(2)
89
+ if self.javacore:
90
+ address = self.javacore.encode(address)
91
+ return address
92
+
79
93
  def get_thread_hash(self):
80
94
  if self.thread:
81
95
  return self.thread.get_hash()
@@ -198,18 +212,6 @@ class ThreadSnapshot:
198
212
  file_name = ""
199
213
  if self.file:
200
214
  file_name = self.javacore.filename.split(os.sep)[-1].strip()
201
- # thread name
202
- thread_name_node = doc.createElement("thread_name")
203
- thread_name_node.appendChild(doc.createTextNode(self.name))
204
- thread_snapshot_node.appendChild(thread_name_node)
205
- # thread id
206
- thread_name_node = doc.createElement("thread_id")
207
- thread_name_node.appendChild(doc.createTextNode(str(self.get_thread_id())))
208
- thread_snapshot_node.appendChild(thread_name_node)
209
- # thread hash
210
- thread_hash_node = doc.createElement("thread_hash")
211
- thread_hash_node.appendChild(doc.createTextNode(str(self.get_thread_hash())))
212
- thread_snapshot_node.appendChild(thread_hash_node)
213
215
  # CPU usage
214
216
  cpu_usage_node = doc.createElement("cpu_usage")
215
217
  cpu_usage_node.appendChild(doc.createTextNode(str(self.get_cpu_usage_inc())))