@@ -1418,15 +1418,20 @@ data NodeJVMInfo = NodeJVMInfo {
1418 , nodeJVMInfoMemoryInfo :: JVMMemoryInfo
1418 , nodeJVMInfoMemoryInfo :: JVMMemoryInfo
1419 , nodeJVMInfoStartTime :: UTCTime
1419 , nodeJVMInfoStartTime :: UTCTime
1420 , nodeJVMInfoVMVendor :: Text
1420 , nodeJVMInfoVMVendor :: Text
1421− , nodeJVMVMVersion :: VersionNumber
1421+ , nodeJVMVMVersion :: VMVersion
1422 -- ^ JVM doesn't seme to follow normal version conventions
1422 -- ^ JVM doesn't seme to follow normal version conventions
1423 , nodeJVMVMName :: Text
1423 , nodeJVMVMName :: Text
1424− , nodeJVMVersion :: VersionNumber
1424+ , nodeJVMVersion :: JVMVersion
1425 , nodeJVMPID :: PID
1425 , nodeJVMPID :: PID
1426 } deriving (Eq, Show)
1426 } deriving (Eq, Show)
1428−-- | Handles quirks in the way JVM versions are rendered (1.7.0_101 -> 1.7.0.101)
1428+-- | We cannot parse JVM version numbers and we're not going to try.
1429+newtype JVMVersion =
1429−newtype JVMVersion = JVMVersion { unJVMVersion :: VersionNumber }
1430+ JVMVersion { unJVMVersion :: Text }
1431+ deriving (Eq, Show)
1433+instance FromJSON JVMVersion where
1434+ parseJSON = withText "JVMVersion" (pure . JVMVersion)
1431data JVMMemoryInfo = JVMMemoryInfo {
1436data JVMMemoryInfo = JVMMemoryInfo {
1432 jvmMemoryInfoDirectMax :: Bytes
1437 jvmMemoryInfoDirectMax :: Bytes
@@ -1436,6 +1441,18 @@ data JVMMemoryInfo = JVMMemoryInfo {
1436 , jvmMemoryInfoHeapInit :: Bytes
1441 , jvmMemoryInfoHeapInit :: Bytes
1437 } deriving (Eq, Show)
1442 } deriving (Eq, Show)
1444+-- VM version numbers don't appear to be SemVer
1445+-- so we're special casing this jawn.
1447+ VMVersion { unVMVersion :: Text }
1448+ deriving (Eq, Show)
1450+instance ToJSON VMVersion where
1451+ toJSON = toJSON . unVMVersion
1453+instance FromJSON VMVersion where
1454+ parseJSON = withText "VMVersion" (pure . VMVersion)
1439newtype JVMMemoryPool = JVMMemoryPool {
1456newtype JVMMemoryPool = JVMMemoryPool {
1440 jvmMemoryPool :: Text
1457 jvmMemoryPool :: Text
1441 } deriving (Eq, Show, FromJSON)
1458 } deriving (Eq, Show, FromJSON)
@@ -2228,14 +2245,9 @@ instance FromJSON NodeJVMInfo where
2228 <*> o .: "vm_vendor"
2245 <*> o .: "vm_vendor"
2229 <*> o .: "vm_version"
2246 <*> o .: "vm_version"
2230 <*> o .: "vm_name"
2247 <*> o .: "vm_name"
2231− <*> (unJVMVersion <$> o .: "version")
2248+ <*> o .: "version"
2232 <*> o .: "pid"
2249 <*> o .: "pid"
2234−instance FromJSON JVMVersion where
2235− parseJSON (String t) =
2236− JVMVersion <$> parseJSON (String (T.replace "_" "." t))
2237− parseJSON v = JVMVersion <$> parseJSON v
2239instance FromJSON JVMMemoryInfo where
2251instance FromJSON JVMMemoryInfo where
2240 parseJSON = withObject "JVMMemoryInfo" parse
2252 parseJSON = withObject "JVMMemoryInfo" parse