Tuesday, 10 October 2017

Argh, I hate macOS when it comes to the apostrophe character

It's days like this when I hate the way that macOS handles the apostrophe, also known as the single quote character.

Specifically, I mean this character: -

'

or do I mean THIS character: -

'

?

Yes, it's the latter and, for some annoying reason, macOS likes to switch from one to t'other, just to annoy me.

So I'm trying to run a Jython script: -

cellID=AdminControl.getCell()
nodeNames = AdminTask.listNodes().splitlines()
for nodeName in nodeNames:
 AdminControl.invoke('WebSphere:name=repository,process=nodeagent,platform=common,node='+nodeName+',version=5.0,type=ConfigRepository,mbeanIdentifier=repository,cell='+cellID+',spec=1.0','refreshRepositoryEpoch'


but I keep getting: -

Traceback (innermost last):
  (no code object) at line 0
  File "<input>", line 2
 AdminControl.invoke('WebSphere:name=repository,process=nodeagent,platform=common,node='+nodeName+',version=5.0,type=ConfigRepository,mbeanIdentifier=repository,cell='+cellID+',spec=1.0','refreshRepositoryEpoch')
                                                                                                                                                                                         ^
SyntaxError: invalid syntax

It took me an AGE to see where I was going wrong.

Once I fixed my syntax : -

cellID=AdminControl.getCell()
nodeNames = AdminTask.listNodes().splitlines()
for nodeName in nodeNames:
 AdminControl.invoke('WebSphere:name=repository,process=nodeagent,platform=common,node='+nodeName+',version=5.0,type=ConfigRepository,mbeanIdentifier=repository,cell='+cellID+',spec=1.0','refreshRepositoryEpoch') 

things moved along.

I then saw this: -

WASX7015E: Exception running command: ""; exception information:
javax.management.InstanceNotFoundException: WebSphere:name=repository,process=nodeagent,platform=common,node=Dmgr,version=5.0,type=ConfigRepository,mbeanIdentifier=repository,cell=PCCell1,spec=1.0


which makes sense, as I'm trying to synchronise a Deployment Manager ( there are two nodes within my cell, and my loop doesn't distinguish between them ).

I further fixed my script: -

cellID=AdminControl.getCell()
nodeNames = AdminTask.listNodes().splitlines()
for nodeName in nodeNames:
 if nodeName.find('D') == -1:
  AdminControl.invoke('WebSphere:name=repository,process=nodeagent,platform=common,node='+nodeName+',version=5.0,type=ConfigRepository,mbeanIdentifier=repository,cell='+cellID+',spec=1.0','refreshRepositoryEpoch')

and now have something that works ( it's primitive, in that it ignores nodes that begin with D e.g. Deployment Manager == Dmgr01

2 comments:

Ben Langhinrichs said...

Of course, it means that while the syntax checking and such may catch most errors, you never know when the same problem might cause an invisible error - one that raises no errors, but gives invalid results or causes damage while running.

After 30+ years of programming, I love the bugs that actually show up when compiling or running. Give me a crash any day over an invisible error.

Dave Hay said...

Ben

Yep, that's SO true.

And, after all this time, I really should know better, and validate my inputs :-)

And yet ...... sigh

Cheers, Dave

Yay, VMware Fusion and macOS Big Sur - no longer "NAT good friends" - forgive the double negative and the terrible pun ...

After macOS 11 Big Sur was released in 2020, VMware updated their Fusion product to v12 and, sadly, managed to break Network Address Trans...