Ad-hoc Artifact deployment in IBM MobileFirst Platform Foundation Server - ibm-mobilefirst
1) What is the approach to take when there is a need to deploy the
artifacts on the fly during normal production
2) Are there any specific artifacts that might need any careful
consideration when deploying during normal production
3) What can be expected to change in system behavior when a on-the-fly
artifact deployment occurs such as sync, transaction failures, memory
usage increase etc and possibly list them out as much as we can so we
can watch out for it
4) As part of 3 above, what is the proper action to take under such
failures such as
4.A) What to do when for some reason sync failures occurs - server restart
etc?
4.B) What to do when a transaction fails as a result of new artifact
deployment - suggest any client code changes that inlcudes minitor for
failure callback and inform the user with a meaningful message or
automatic retry?
1) What is the approach to take when there is a need to deploy the
artifacts on the fly during normal production
Whenever a new artifact needs to be deployed, the environment takes a small downtime and traffic to the environment is blocked. The artifacts are updated.
Restart the servers if required. Open the traffic for the application.
The downtime is usually taken at non peak hours for the application.
2) Are there any specific artifacts that might need any careful
consideration when deploying during normal production
The only artifacts that are updated are the Runtime WAR file,
adapters and wlapps.
The WAR file is usually updated if there is an iFix upgrade. (Requires a
downtime).
The wlapp can be of 2 types.
The wlapp is for a new version. (Requires no downtime as there is no
traffic as yet for a new version).
The wlapp upgrades the existing hybrid application. (Advice a
downtime as direct update will be immediately triggered on all devices
connecting).
The adapters are updated to fix functionality. (Advice a downtime as
sensitive transaction flows are interupted).
The adapters are new. (Requires no downtime).
3) What can be expected to change in system behavior when a on-the-fly
artifact deployment occurs such as sync, transaction failures, memory
usage increase etc and possibly list them out as much as we can so we
can watch out for it
This is completely application logic dependant. The sync failures
could occur when the WAR file is updated. But when WAR file is updated
, a restart of the Application server is advised anyways. Transaction failures are application logic
dependant so they are undefined. Memory usage also depends on how the
application logic has changed. Unless the changes are major, they should
work fine.
4) As part of 3 above, what is the proper action to take under such
failures such as
4.A) What to do when for some reason sync failures occurs - server restart
etc?
Need to check with WebSphere support team as to why the sync failed. The
server restart should be sufficient to resolve any sync issues. But if
the sync failures across cluster are a common thing please collect logs
and open a PMR to be review by WAS support
4.B) What to do when a transaction fails as a result of new artifact
deployment - suggest any client code changes that inlcudes minitor for
failure callback and inform the user with a meaningful message or
automatic retry?
The application logic should handle the transaction failure. The adapter code
should gracefully send a meaningful message and request user to try
again.
Related
IBM MQ cluster sender channels between 2 FR keep retrying
I ve created 2 hosts (1local and 1 on windows VM). Set everything according to screen to create cluster with goal to make clustered topic: So i added 2 FR and 6 PR queue mamangers and facing 2 problems: I dont see FR2 in cluster directory, just system.tempqmgr which means its not connected Sender channels keep retrying, as u can see i can remote connect to other managers without problem. Firewall is off, authentication type is none, no authentication records are created, managers are full repository. i tried recreate managers, authentications, clusters, turn on/off channels, nothing worked. Any ideas? EDIT: I found out that even basic sender-receiver channels are not working. What can be problem? In chat found out from OP the following error being reported: 9. 3. 2020 17:27:20 - Process(7292.1) User(MUSR_MQADMIN) Program(runmqchl.exe) Host(DESKTOP-630J3C2) Installation(Installation1) VRMF(9.1.0.0) QMgr(CTHFR1) Time(2020-03-09T16:27:20.542Z) ArithInsert1(852) ArithInsert2(437) AMQ6047E: Conversion not supported. EXPLANATION: IBM MQ is unable to convert string data tagged in CCSID 852 to data in CCSID 437.
After further discussion in chat the SO provided info from CTHFR1's AMQERR01.LOG file. The key info from this was the error below directly after the entry showing that the channel TO.CTHRF2 started: AMQ6047E: Conversion not supported. EXPLANATION: IBM MQ is unable to convert string data tagged in CCSID 852 to data in CCSID 437. CCSID 852 is a code page used under DOS to write Central European languages that use Latin script. CCSID 437 is the character set of the original IBM PC. This means that CTHFR1 on the local PC is running with CCSID 852 and CTHFR2 on the VM is running with CCSID 437. I am not sure I understand why conversion is required since both the CLUSSDR and CLUSRCVR definitions provided in the chat had CONVERT(NO) set but I suspect it has to do with both queue managers being full repositories for the cluster. In any case apparently IBM MQ on Windows can not convert from 852 to 437. The suggested resolution to this problem is to set the CCSID of CTHFR1 to 437 and restart. ALTER QMGR CCSID(437) The OP confirmed this resolved the issue.
google cloud dataflow cross project access for big table
I want to run dataflow job to migrate data from google-project-1-table to google-project-2-table. (Read from one and write to another). I am getting permission issue while doing that. I have set "GOOGLE_APPLICATION_CREDENTIALS" to point to my credential file for project-1. In project-2 below are the permissions/roles for project-1. 1) service-account (role - Editor) 2) -compute#developer.gserviceaccount.com (role - Editor) 3) #cloudservices.gserviceaccount.com(role - Editor). Is there anything else I need to do to run the job? Caused by: com.google.bigtable.repackaged.com.google.cloud.grpc.io.IOExceptionWithStatus: Error in response stream at com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.ResultQueueEntry$ExceptionResultQueueEntry.getResponseOrThrow(ResultQueueEntry.java:66) at com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.ResponseQueueReader.getNextMergedRow(ResponseQueueReader.java:55) at com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.StreamingBigtableResultScanner.next(StreamingBigtableResultScanner.java:42) at com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.StreamingBigtableResultScanner.next(StreamingBigtableResultScanner.java:27) at com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.ResumingStreamingResultScanner.next(ResumingStreamingResultScanner.java:89) at com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.ResumingStreamingResultScanner.next(ResumingStreamingResultScanner.java:45) at com.google.cloud.bigtable.dataflow.CloudBigtableIO$1.next(CloudBigtableIO.java:221) at com.google.cloud.bigtable.dataflow.CloudBigtableIO$1.next(CloudBigtableIO.java:216) at com.google.cloud.bigtable.dataflow.CloudBigtableIO$Reader.advance(CloudBigtableIO.java:775) at com.google.cloud.bigtable.dataflow.CloudBigtableIO$Reader.start(CloudBigtableIO.java:799) at com.google.cloud.dataflow.sdk.io.Read$Bounded$1.evaluateReadHelper(Read.java:178) ... 18 more Caused by: com.google.bigtable.repackaged.io.grpc.StatusRuntimeException: PERMISSION_DENIED: User can't access project: project-2 at com.google.bigtable.repackaged.io.grpc.Status.asRuntimeException(Status.java:431) at com.google.bigtable.repackaged.com.google.cloud.grpc.scanner.StreamObserverAdapter.onClose(StreamObserverAdapter.java:48) at com.google.bigtable.repackaged.io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$3.runInContext(ClientCallImpl.java:462) at com.google.bigtable.repackaged.io.grpc.internal.ContextRunnable.run(ContextRunnable.java:54) at com.google.bigtable.repackaged.io.grpc.internal.SerializingExecutor$TaskRunner.run(SerializingExecutor.java:154) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ... 1 more
There are some instructions for this in the section "Accessing Cloud Platform Resources Across Multiple Cloud Platform Projects" of the Dataflow Security and Permissions guide. Since that guide does not explicitly address Cloud BigTable, I will try to write up the requirements clearly here in terms of your question. Using fake project id numbers, it seems you have: A project project-1 with id 12345. A project project-2 with id 9876 A Bigtable google-project-1-table in project-1 A Bigtable google-project-2-table in project-2 A Dataflow pipeline that will run in project-1, which you want to: read from google-project-1-table write to google-project-2-table Is that accurate? Your Dataflow workers that write to Bigtable run as the compute engine service account. That is 12345-compute#developer.gserviceaccount.com. This account will need to be able to access project-2 and write to google-project-2-table. Your error message implies that the permissions failure occurs at the coarsest granularity - the account cannot access project-2 at all.
Unavailable Camera control API functions, Sony Development SDK, Camera WX500
I am trying to modify the CameraRemoteSampleApp provided by the Sony SDK to add full control over the aperture, iso, and shutter speed to the interface. At this point however all the relevant functions are off limits. The documentation defines these functions as "available if the latest version of the PlayMemories Smart Remote Control is installed and in use". a) The smart remote control is installed and running, with the smartphone connected through it and wifi (Samsung Galaxy SIII). b) I can take photos with the SDK Sample App. c) Using the available API list shows that the functions exist but are not available. d) Calling one of those functions directly returns "Not Available Now". This error code is not present in the documentation. How can one get access to ISO/F-number/Shutter speed functions in this case? JSON requests and responses: Request Methods: {"id":1,"method":"getMethodTypes","version":"1.0","params":[""]} Response: {"id":1,"results":[["actTakePicture",[],["string*"],"1.0"],["actZoom",["string","string"],["int"],"1.0"],["awaitTakePicture",[],["string*"],"1.0"],["cancelTouchAFPosition",[],[],"1.0"],["getApplicationInfo",[],["string","string"],"1.0"],["getAvailableApiList",[],["string*"],"1.0"],["getAvailableExposureCompensation",[],["int","int","int","int"],"1.0"],["getAvailableExposureMode",[],["string","string*"],"1.0"],["getAvailableFNumber",[],["string","string*"],"1.0"],["getAvailableFlashMode",[],["string","string*"],"1.0"],["getAvailableFocusMode",[],["string","string*"],"1.0"],["getAvailableIsoSpeedRate",[],["string","string*"],"1.0"],["getAvailableLiveviewSize",[],["string","string*"],"1.0"],["getAvailablePostviewImageSize",[],["string","string*"],"1.0"],["getAvailableSelfTimer",[],["int","int*"],"1.0"],["getAvailableShootMode",[],["string","string*"],"1.0"],["getAvailableShutterSpeed",[],["string","string*"],"1.0"],["getAvailableWhiteBalance",[],["{\"whiteBalanceMode\":\"string\", \"colorTemperature\":\"int\"}","{\"whiteBalanceMode\":\"string\", \"colorTemperatureRange\":\"int*\"}*"],"1.0"],["getEvent",["bool"],["{\"type\":\"string\", \"names\":\"string*\"}","{\"type\":\"string\", \"cameraStatus\":\"string\"}","{\"type\":\"string\", \"zoomPosition\":\"int\", \"zoomNumberBox\":\"int\", \"zoomIndexCurrentBox\":\"int\", \"zoomPositionCurrentBox\":\"int\"}","{\"type\":\"string\", \"liveviewStatus\":\"bool\"}","{\"type\":\"string\", \"liveviewOrientation\":\"string\"}","{\"type\":\"string\", \"takePictureUrl\":\"string*\"}*","{\"type\":\"string\", \"continuousError\":\"string\", \"isContinued\":\"bool\"}*","{\"type\":\"string\", \"triggeredError\":\"string*\"}","{\"type\":\"string\", \"sceneRecognition\":\"string\", \"steadyRecognition\":\"string\", \"motionRecognition\":\"string\"}","{\"type\":\"string\", \"formatResult\":\"string\"}","{\"type\":\"string\", \"storageID\":\"string\", \"recordTarget\":\"bool\", \"numberOfRecordableImages\":\"int\", \"recordableTime\":\"int\", \"storageDescription\":\"string\"}*","{\"type\":\"string\", \"currentBeepMode\":\"string\", \"beepModeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentCameraFunction\":\"string\", \"cameraFunctionCandidates\":\"string*\"}","{\"type\":\"string\", \"currentMovieQuality\":\"string\", \"movieQualityCandidates\":\"string*\"}","{\"type\":\"string\", \"checkAvailability\":\"bool\", \"currentAspect\":\"string\", \"currentSize\":\"string\"}","{\"type\":\"string\", \"cameraFunctionResult\":\"string\"}","{\"type\":\"string\", \"currentSteadyMode\":\"string\", \"steadyModeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentViewAngle\":\"int\", \"viewAngleCandidates\":\"int*\"}","{\"type\":\"string\", \"currentExposureMode\":\"string\", \"exposureModeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentPostviewImageSize\":\"string\", \"postviewImageSizeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentSelfTimer\":\"int\", \"selfTimerCandidates\":\"int*\"}","{\"type\":\"string\", \"currentShootMode\":\"string\", \"shootModeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentAELock\":\"bool\", \"aeLockCandidates\":\"bool*\"}","{\"type\":\"string\", \"checkAvailability\":\"bool\", \"currentBracketShootMode\":\"string\", \"currentBracketShootModeOption\":\"string\"}","{\"type\":\"string\", \"checkAvailability\":\"bool\", \"currentCreativeStyle\":\"string\", \"currentCreativeStyleContrast\":\"int\", \"currentCreativeStyleSaturation\":\"int\", \"currentCreativeStyleSharpness\":\"int\"}","{\"type\":\"string\", \"currentExposureCompensation\":\"int\", \"maxExposureCompensation\":\"int\", \"minExposureCompensation\":\"int\", \"stepIndexOfExposureCompensation\":\"int\"}","{\"type\":\"string\", \"currentFlashMode\":\"string\", \"flashModeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentFNumber\":\"string\", \"fNumberCandidates\":\"string*\"}","{\"type\":\"string\", \"currentFocusMode\":\"string\", \"focusModeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentIsoSpeedRate\":\"str Request Versions: {"id":2,"method":"getVersions","version":"1.0","params":[]} Response: {"id":2,"result":[["1.0"]]} Request API: {"id":3,"method":"getAvailableApiList","version":"1.0","params":[]} Response: {"id":3,"result":[["getVersions","getMethodTypes","getApplicationInfo","getAvailableApiList","getEvent","actTakePicture","stopRecMode","startLiveview","stopLiveview","actZoom","setSelfTimer","getSelfTimer","getAvailableSelfTimer","getSupportedSelfTimer","setExposureCompensation","getExposureCompensation","getAvailableExposureCompensation","getSupportedExposureCompensation","setShootMode","getShootMode","getAvailableShootMode","getSupportedShootMode","getSupportedFlashMode"]]} Request Flash: {"id":5,"method":"getSupportedFlashMode","version":"1.0","params":[]} Response Flash: {"id":5,"result":[["off","auto","on","slowSync","rearSync"]]} Request speed: {"id":5,"method":"getAvailableShutterSpeed","version":"1.0","params":[]} Response speed: {"id":5,"error":[1,"Not Available Now"]}
There are a couple things that you can check first: Do you have the latest version of Smart Remote Control installed? Do you have the latest firmware update for your camera?
Expert advisor in different trader platform
I would like to know, if I code an EA in a normal metatrader4 platform, can I reuse the .ex4 in other trading platform for example InstaTrader? The reason is that, when I have created a new EA in InstaTrader, the EA code generated from InstaTrader is different from the one generated from metatrader4. And I couldn't find any documentation regarding to InstaTrader's EA. Not sure anyone has encountered this before?
No. MQL is the language specifically for meta-editor which is a member of meta-trader platform. Other trading languages may have their own scripting languages.
Metatrader4 In principle Metatrader4 uses a Metalang.exe that compiles the MQL4-source-code files into an "internally"-executable format EX4 As defined, EX4 is binary-executable on all Metatrader4 terminals. . WhiteLabel-ed Terminals InstaTrader(TM) and many other *-Trader(TM)-s are so called White-Label modifications of the same MetaQuotes, Inc., software product, the [Metatrader 4 Terminal], that are just individually "skinned" in a name of the respective Broker, who has bought from the MetaQuotes, Inc. the license for a suite of [Metatrader 4 Server + Metatrader 4 Risk Management + Metatrader 4 Dealer Desk + ... ], inclusive, but not limited to, the right to re-label the client Terminal program. Thus under most of the situations your EX4 code shall run on any other re-labeled Terminal But... Restrictions on binary-compatibility apply, as Metatrader4 terminals gets released in so called Builds, ( Build 432 -> Build 468 -> Build 509 -> ... -> Build 600 -> Build 624 ) and some of these have also modified the binary-code format. Thus the EX4 code shall be hosted on a "similar" generation of the Terminal Build Finally... The ultimate show-stopper is the MetaQuotes, Inc., licensing policy, which makes a server-side locking to take place [Metatrader 4 Server] has a setting to reject connection requests from client Terminals in case their Build # is lesser than a treshold set on Server side. There the SLM story ends. Forever.
Problems deploying Grails application on cloudbees
I'm new cloudbees user, I've succeeded in building my war file but I can't deploy it because when a I'm going to use Deploy Now option, putting my application ID claxon/claxon I always get the same error: **"hudson.util.IOException2: Server.InternalError - Expected Application ID format: account/appname > claxon/"** this is the log.. hudson.util.IOException2: Server.InternalError - Expected Application ID format: account/appname > claxon/ at com.cloudbees.plugins.deployer.deployables.Deployable.deployFile(Deployable.java:152) at com.cloudbees.plugins.deployer.DeployNowRunAction$Deployer.perform(DeployNowRunAction.java:639) at com.cloudbees.plugins.deployer.DeployNowRunAction.run(DeployNowRunAction.java:484) at com.cloudbees.plugins.deployer.DeployNowTask$ExecutableImpl.run(DeployNowTask.java:157) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:236) Caused by: com.cloudbees.api.BeesClientException: Server.InternalError - Expected Application ID format: account/appname > claxon/ at com.cloudbees.api.BeesClient.readResponse(BeesClient.java:850) at com.cloudbees.api.BeesClient.applicationDeployArchive(BeesClient.java:435) at com.cloudbees.plugins.deployer.deployables.Deployable.deployFile(Deployable.java:124) ... 5 more Duration: 4.1 sec Finished: FAILURE Anybody can help me?.
Don't put the claxon/ the account is sorted for you when you choose the account from the account drop down. just put the id part. If you expand the help text you will see that it says not to prefix: Note: I used my superuser rights to capture this screenshot... the only bit that might be confidential is your account name, which you had already exposed via the original question.