คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
ลักษณะปัญหา
การทำให้พร็อกซี API หรือการแก้ไขโฟลว์ที่แชร์ใช้งานได้ผ่าน Edge UI หรือ API การจัดการล้มเหลวโดยมีข้อผิดพลาดการกำหนดค่าล้มเหลว
ข้อความแสดงข้อผิดพลาด
คุณจะได้รับข้อความแสดงข้อผิดพลาดใน Edge UI ตามที่แสดงด้านล่าง
The revision is deployed, but traffic cannot flow.
com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}
ภาพหน้าจอของตัวอย่างข้อความแสดงข้อผิดพลาดที่พบใน Edge UI มีดังนี้
สาเหตุที่เป็นไปได้
การทำให้พร็อกซี API ใช้งานได้อาจล้มเหลวโดยมีข้อผิดพลาด "การกำหนดค่าล้มเหลว" เนื่องจากสาเหตุหลายประการ ตารางด้านล่างแสดงสาเหตุที่พบบ่อยซึ่งทำให้เกิดข้อผิดพลาดนี้
สาเหตุ | คำอธิบาย | วิธีการแก้ปัญหาสำหรับ |
ไม่มี Java Class ใน Javaข้อความไฮไลต์ | ไม่มีคลาส Java จากไฟล์ JAR ที่อ้างอิงโดยนโยบาย Javaต้องระบุ | ผู้ใช้ Edge Private Cloud |
การใช้ตัวถูกดำเนินการที่ไม่ถูกต้องในเงื่อนไขของโฟลว์เงื่อนไข | ตัวถูกดำเนินการ/นิพจน์ที่ใช้ในโอเปอเรเตอร์ด้านใดด้านหนึ่งหรือทั้ง 2 ด้านในเงื่อนไขไม่ถูกต้อง | |
ชื่อโฮสต์ไม่ถูกต้องในนโยบายการบันทึกข้อความ | ไม่สามารถแก้ไขชื่อโฮสต์ที่ใช้ในนโยบาย MessageLaging หรืออาจมีสัญลักษณ์พิเศษบางอย่างที่ไม่พึงประสงค์ | |
ชื่อ KeyValueMap ไม่ถูกต้อง | KeyValueMap ไม่ถูกต้องหรือว่างเปล่าในนโยบาย KeyValueMapOperatings ในพร็อกซี API |
ขั้นตอนการวิเคราะห์ทั่วไป
รับสถานะการทำให้ใช้งานได้สำหรับการแก้ไขเฉพาะสำหรับพร็อกซี API ที่คุณสังเกตเห็นข้อผิดพลาดในการทำให้ใช้งานได้โดยใช้ API ด้านล่าง:
curl -v <management-server-host>:<port#>/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/deployments -u <user>
ต่อไปนี้คือตัวอย่างเอาต์พุตจาก API ข้างต้น
"server" : [ { "error" : "com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}", "status" : "error", "type" : [ "message-processor" ], "uUID" : "0a20926c-f4bf-401b-af84-05fd84b9f492" }, { "error" : "com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}", "status" : "error", "type" : [ "message-processor" ], "uUID" : "f2ee6ab4-a108-4465-a7ba-b56530d8e3fc" }, { "error" : "com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}", "status" : "error", "type" : [ "message-processor" ], "uUID" : "0f41991e-b310-4e77-aac5-5fdb150ef9f6" },
คุณจะเห็นข้อความแสดงข้อผิดพลาด "การกำหนดค่าล้มเหลว" ในตัวประมวลผลข้อความแต่ละตัวในเอาต์พุตสถานะการทำให้ใช้งานได้
ลงชื่อเข้าใช้เครื่องมือประมวลผลข้อความและตรวจสอบบันทึก
/opt/apigee/var/log/edge-message-processor/logs/system.log
ดูว่ามีข้อผิดพลาดในระหว่างการติดตั้งใช้งานพร็อกซี API หรือไม่คุณต้องทำตามขั้นตอนการแก้ปัญหาและวิธีแก้ไขปัญหาที่เหมาะสม ทั้งนี้ขึ้นอยู่กับข้อผิดพลาด/ข้อยกเว้นที่ปรากฏในบันทึกผู้ประมวลผลข้อความ
ส่วนด้านล่างจะระบุข้อยกเว้นที่สังเกตเห็นบ่อยที่สุดบางรายการ ซึ่งทําให้เกิดข้อผิดพลาดในการติดตั้งใช้งาน "การกําหนดค่าล้มเหลว" และระบุขั้นตอนในการแก้ปัญหาและแก้ไขปัญหาดังกล่าว
สาเหตุ: ไม่มีคลาส Java ในนโยบาย JavaScriptที่แตกต่างกัน
การวินิจฉัย
- ในบันทึกตัวประมวลผลข้อความ หากคุณเห็นข้อยกเว้นที่มีข้อความ "ไม่สามารถสร้างอินสแตนซ์ JavaScript Class" ในระหว่างการติดตั้งใช้งานพร็อกซี API (DeployEvent) ดังที่แสดงด้านล่าง ให้ไปยังขั้นตอนที่ 2 หากไม่ ให้ไปที่ตัวถูกดำเนินการที่ไม่ถูกต้องที่ใช้ในเงื่อนไขของโฟลว์เงื่อนไข
ตัวประมวลผลข้อความจะแสดงข้อยกเว้นต่อไปนี้ระหว่างการทำให้พร็อกซี API ใช้งานได้
2017-10-10 05:02:42,330 Apigee-Main-5 ERROR MESSAGING.CONFIGURATION - MessageProcessorServiceImpl.configure() : error configuring config events [DeployEvent{organization='myorg', application='oauth2', applicationRevision='14', deploymentSpec=basepath=/;env=dev;, deploymentID=null}] com.apigee.kernel.exceptions.spi.UncheckedException: Failed to instantiate the JavaCallout Class com.something.apigee.callout.crypto.main.SecretCallout at com.apigee.steps.javacallout.JavaCalloutStepDefinition.newInstance(JavaCalloutStepDefinition.java:89) ~[javacallout-1.0.0.jar:na] at com.apigee.messaging.runtime.StepDefinition.getStepDefinitionExecution(StepDefinition.java:230) ~[message-processor-1.0.0.jar:na] … <snipped>
ข้อความแสดงข้อผิดพลาดในข้อยกเว้นข้างต้นระบุว่าไม่สามารถสร้างอินสแตนซ์คลาส JavaScript
com.something.apigee.callout.crypto.main.SecretCallout
ได้ ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อไม่มีคลาสที่ระบุในไฟล์ JAR ที่ระบุในนโยบาย JavaScript หรือไฟล์ JAR ใดๆ ที่เกี่ยวข้องตรวจสอบไฟล์ JAR ที่มีคลาสทั้งหมดที่เกี่ยวข้องกับแพ็กเกจ
com.something.apigee.callout.crypto.main
และยืนยันว่าคลาสcom.something.apigee.callout.crypto.main.SecretCallout
ที่ระบุขาดหายไป
ความละเอียด
- เพิ่มคลาสที่ขาดหายไปลงในไฟล์ JAR ที่ระบุและอัปโหลดไฟล์ JAR
- ทำให้พร็อกซี API ใช้งานได้อีกครั้ง
- ในตัวอย่างข้างต้น เราได้แก้ไขปัญหาดังนี้
- กำลังเพิ่มคลาส
com.something.apigee.callout.crypto.main.SecretCallout
ที่ขาดหายไปลงในไฟล์ JAR - อัปโหลดไฟล์ JAR ที่อัปเดตแล้วและทำให้พร็อกซี API ใช้งานได้อีกครั้ง
- กำลังเพิ่มคลาส
สาเหตุ: ตัวถูกดำเนินการที่ใช้กับโอเปอเรเตอร์ในโฟลว์เงื่อนไขไม่ถูกต้อง
การวินิจฉัย
ในบันทึกตัวประมวลผลข้อความ ถ้าคุณเห็น
com.apigee.expressions.parser.ParseException
ระหว่างการติดตั้งใช้งานพร็อกซี API หรือโฟลว์ที่แชร์ ดังที่แสดงในข้อความตัวอย่างด้านล่าง ให้ดำเนินการต่อในขั้นตอนที่ 2 หากไม่พบ ให้ไปที่สาเหตุถัดไปชื่อโฮสต์ไม่ถูกต้องในนโยบายการบันทึกข้อความตัวอย่างข้อความแสดงข้อผิดพลาด
com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressions
มาดูตัวอย่างเพื่อให้เข้าใจวิธีวิเคราะห์ปัญหานี้กัน
ตัวอย่าง : ตัวดำเนินการสำหรับนิพจน์ <Operator> ควรเป็นนิพจน์ข้อมูล
ตัวประมวลผลข้อความจะแสดงข้อยกเว้นต่อไปนี้ในระหว่างการติดตั้งใช้งานโฟลว์ที่แชร์
2017-11-23 09:11:04,498 Apigee-Main-6 ERROR MESSAGING.RUNTIME - AbstractConfigurator.loadXMLConfigurations() : Unable to Load default for path /organizations/myorg/apiproxies/Introspection/revisions/12/sharedflows/default 2017-11-23 09:11:04,499 Apigee-Main-6 ERROR MESSAGING.RUNTIME - Application.sync() : sync error for Introspection and revision 12 2017-11-23 09:11:04,499 Apigee-Main-6 ERROR MESSAGING.RUNTIME - Application.sync() : Actual Error com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressions at com.apigee.expressions.parser.ExpressionParser.buildExpressionTree(ExpressionParser.java:337) ~[expressions-1.0.0.jar:na] at com.apigee.expressions.parser.ExpressionParser.parse(ExpressionParser.java:24) ~[expressions-1.0.0.jar:na] at com.apigee.expressions.parser.ExpressionParser.parseLogicExpression(ExpressionParser.java:28) ~[expressions-1.0.0.jar:na] at com.apigee.messaging.runtime.Step.getExpression(Step.java:67) ~[message-processor-1.0.0.jar:na] at com.apigee.messaging.runtime.Step.handleAdd(Step.java:58) ~[message-processor-1.0.0.jar:na] at com.apigee.messaging.runtime.SharedFlowRuntime.addStep(SharedFlowRuntime.java:81) ~[message-processor-1.0.0.jar:na] … <snipped>
ข้อความแสดงข้อผิดพลาดใน ParseException - "
Both the operands for EQUALS expression should be data expressions
" ระบุว่าเงื่อนไขที่เกี่ยวข้องกับ เท่ากับ (=) ไม่เท่ากับ (!=) หรือสถิติที่มีโอเปอเรเตอร์ (=|) มีปัญหาดูเงื่อนไขในโฟลว์เงื่อนไขทั้งหมดที่เกี่ยวข้องกับโอเปอเรเตอร์เฉพาะที่กล่าวถึงในข้อความแสดงข้อผิดพลาด และดูว่ามีปัญหาใดๆ ต่อไปนี้หรือไม่
- นิพจน์ด้านใดด้านหนึ่งของโอเปอเรเตอร์เป็นประเภทเดียวกัน เช่น หากคุณมีตัวแปรสตริงทางด้านซ้ายของโอเปอเรเตอร์ คุณต้องมีตัวแปรสตริงหรือค่าสตริงอื่นทางด้านขวา
- โอเปอเรเตอร์จะใช้ตัวแปรที่ถูกต้อง
- มีช่องว่างระหว่างโอเปอเรเตอร์และแต่ละนิพจน์
หากไม่เป็นไปตามเกณฑ์ข้อใดข้อหนึ่งข้างต้น คุณจะได้รับ ParseException - "
Both the operands for EQUALS expression should be data expressions
"เรามาดูตัวอย่างเพื่อให้เข้าใจปัญหานี้กัน ต่อไปนี้คือตัวอย่างเงื่อนไขข้อผิดพลาด
<Condition> (fault.name = "invalid_access_token") or(fault.name = "ApiKeyNotApproved") </Condition>
ในตัวอย่างนี้ คุณจะสังเกตเห็นว่าไม่มีช่องว่างระหว่างโอเปอเรเตอร์ "or" ตามด้วยเงื่อนไขถัดไป ดังนั้นเมื่อมีการแยกวิเคราะห์เงื่อนไขที่ 2 นิพจน์แรกจะถูกใช้เป็น "or(fault.name" สำหรับโอเปอเรเตอร์ EQUALS ชื่อนี้ไม่ใช่ชื่อตัวแปรที่ถูกต้อง จึงไม่ถือเป็นนิพจน์ข้อมูลที่ถูกต้อง ผลที่ตามมาคือคุณจะได้รับข้อยกเว้นนี้
com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressions
ความละเอียด
- ตรวจสอบให้แน่ใจว่าคุณมีนิพจน์ข้อมูลที่เหมาะสมอยู่เสมอในด้านใดด้านหนึ่งของโอเปอเรเตอร์
ในตัวอย่างที่กล่าวถึงข้างต้น วิธีแก้ไขคือมีช่องว่างหลังโอเปอเรเตอร์ "หรือ" ตามที่อธิบายไว้ในข้อมูลโค้ด
<Condition> (fault.name = "invalid_access_token") or (fault.name = "ApiKeyNotApproved") </Condition>
ชื่อโฮสต์ไม่ถูกต้องในนโยบาย MessageLoking
การวินิจฉัย
ในบันทึกตัวประมวลผลข้อความ หากคุณเห็นข้อยกเว้นที่มีข้อความ "HostName ไม่ถูกต้อง" ระหว่างการติดตั้งใช้งานพร็อกซี API หรือโฟลว์ที่แชร์ดังที่แสดงด้านล่าง ให้ดำเนินการต่อในขั้นตอนที่ 2 หากไม่ ให้ไปที่สาเหตุถัดไป ชื่อ KeyValueMap ไม่ถูกต้อง
com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler
โปรดดู 2 ตัวอย่างด้านล่างเพื่อให้เข้าใจวิธีแก้ปัญหาและแก้ไขปัญหานี้
ตัวอย่างที่ 1: HostName มีอักขระพิเศษที่ไม่ต้องการ
ตัวประมวลผลข้อความจะแสดงข้อยกเว้นต่อไปนี้ระหว่างการทำให้พร็อกซี API ใช้งานได้
2018-01-20 02:12:13,535 Apigee-Main-3 ERROR MESSAGING.CONFIGURATION - MessageProcessorServiceImpl.configure() : error configuring config events [DeployEvent{organization='myorg', application='providersearch', applicationRevision='4', deploymentSpec=basepath=/;env=prod;, deploymentID=null}] com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler at com.apigee.messaging.runtime.destinations.SyslogDestination.<init>(SyslogDestination.java:44) ~[message-processor-1.0.0.jar:na] at com.apigee.messaging.runtime.destinations.SysLoggerFactory.getInstance(SysLoggerFactory.java:39) ~[message-processor-1.0.0.jar:na] at com.apigee.messaging.runtime.destinations.DestinationRegistry.newDestination(DestinationRegistry.java:44) ~[message-processor-1.0.0.jar:na] ...<snipped>
ข้อยกเว้นข้างต้นแสดงให้เห็นว่าการทำให้ใช้งานได้ล้มเหลวเนื่องจาก "ชื่อโฮสต์ไม่ถูกต้อง '<ชื่อโฮสต์>' สำหรับเครื่องจัดการ Syslog" ซึ่งแสดงว่า HostName ที่ใช้ในนโยบาย MessageLogging เป็นชื่อโฮสต์ที่ไม่ถูกต้อง
การตรวจสอบข้อยกเว้นในบันทึกตัวประมวลผลข้อความจะแสดงอย่างละเอียดว่าพบอักขระพิเศษที่ไม่ต้องการ "/" ที่ส่วนท้ายของ HostName
'splunkprod.myorg.com/'.
อักขระพิเศษที่ไม่พึงประสงค์นี้คือสาเหตุของข้อผิดพลาดในการทำให้ใช้งานได้
ความละเอียด
- แก้ไขนโยบาย MessageLaging เพื่อนำสัญลักษณ์พิเศษที่ไม่ต้องการออกเพื่อแก้ไขปัญหา
- ในตัวอย่างข้างต้น เราได้นำสัญลักษณ์พิเศษ "/" ออกจากนโยบาย MessageLogging วิธีนี้แก้ปัญหาได้แล้ว
ตัวอย่างที่ 2: ชื่อโฮสต์แก้ไขไม่ได้
บันทึกของตัวประมวลผลข้อความมีข้อความ 2-3 บรรทัดที่ระบุว่าเหตุการณ์การติดตั้งใช้งานสำหรับพร็อกซี API ถูกเรียก ตามด้วยข้อยกเว้นที่เกิดขึ้นระหว่างการติดตั้งใช้งานพร็อกซี API
2017-12-22 00:13:49,057 Apigee-Main-87446 INFO MESSAGING.CONFIGURATION - MessageProcessorServiceImpl.configure() : configuring [DeployEvent{organization='myorg', application='myapi', applicationRevision='42', deploymentSpec=basepath=/;env=dev;, deploymentID=null}] 2017-12-22 00:13:49,318 Apigee-Main-87446 ERROR c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.refresh() : Unable to resolve host : input-prd.cloud.splunk.com: Name or service not known 2017-12-22 00:13:49,323 Apigee-Main-87446 ERROR MESSAGING.RUNTIME - AbstractConfigurator.handleUpdate() : Fatal error deploying proxy: {} com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'input-prd.cloud.splunk.com' for Syslog handler at com.apigee.messaging.runtime.destinations.SyslogDestination.<init>(SyslogDestination.java:44) ~[message-processor-1.0.0.jar:na] at com.apigee.messaging.runtime.destinations.SysLoggerFactory.getInstance(SysLoggerFactory.java:39) ~[message-processor-1.0.0.jar:na] at com.apigee.messaging.runtime.destinations.DestinationRegistry.newDestination(DestinationRegistry.java:44) ~[message-processor-1.0.0.jar:na] at com.apigee.steps.messagelogging.MessageLoggingStepDefinition.populateDestinations(MessageLoggingStepDefinition.java:118) ~[message-logging-1.0.0.jar:na] at com.apigee.steps.messagelogging.MessageLoggingStepDefinition.handleAdd(MessageLoggingStepDefinition.java:99) ~[message-logging-1.0.0.jar:na] … <snipped>
ข้อยกเว้นข้างต้นแสดงให้เห็นว่าการทำให้ใช้งานได้ล้มเหลวเนื่องจาก "ชื่อโฮสต์ไม่ถูกต้อง '<ชื่อโฮสต์>' สำหรับเครื่องจัดการ Syslog"
หากคุณอ่านบรรทัดข้างบนข้อยกเว้น พบว่าเครื่องมือประมวลผลข้อความแก้ไขชื่อโฮสต์
'input-prd.cloud.splunk.com'
ที่ระบุไว้ในนโยบาย MessageLadding ไม่ได้เพื่อยืนยันสิ่งนี้ คุณสามารถลอง Telnet ไปยังชื่อโฮสต์และพอร์ต # ที่ใช้ในนโยบายการบันทึกข้อความ
ตรวจสอบนโยบาย MessageLogging ในการแก้ไขพร็อกซี API ที่เฉพาะเจาะจง และยืนยันชื่อโฮสต์และหมายเลขพอร์ตที่ใช้ ในตัวอย่างข้างต้น ชื่อพร็อกซี API: myapi, edit: 42
นโยบายการบันทึกข้อมูลข้อความ
<MessageLogging async="false" continueOnError="false" enabled="true" name="Log-To-Splunk"> <DisplayName>Log-To-Splunk</DisplayName> <Syslog> <Message>Message.id = {request.header.id}</Message> <Host>input-prd.cloud.splunk.com</Host> <Port>2900</Port> <Protocol>TCP</Protocol> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </Syslog> </MessageLogging>
Telnet ไปยังโฮสต์ที่มีพอร์ตเฉพาะ สำหรับตัวอย่างนี้ เราได้ลองใช้ Telnet แล้ว และได้รับข้อผิดพลาดเดียวกันกับที่เห็นในบันทึกของผู้ประมวลผลข้อความ:
telnet input-prd.cloud.splunk.com 2900 telnet: input-prd.cloud.splunk.com: Name or service not known input-prd.cloud.splunk.com: Host name lookup failure
ซึ่งพิสูจน์ให้เห็นแล้วว่าชื่อโฮสต์นั้นแก้ไขไม่ได้
ความละเอียด
- แก้ไขนโยบาย MessageLoking เพื่อใช้ชื่อโฮสต์ที่ถูกต้อง
หากยังคงพบปัญหาอยู่ ให้ไปที่ต้องรวบรวมข้อมูลการวินิจฉัย
สาเหตุ: ชื่อ KeyValueMap ไม่ถูกต้อง
การวินิจฉัย
ในบันทึกตัวประมวลผลข้อความ หากคุณเห็นข้อยกเว้นที่มีข้อความ "ชื่อ KeyValueMap ไม่ถูกต้อง" ระหว่างการใช้งานพร็อกซี API หรือโฟลว์ที่แชร์ดังที่แสดงด้านล่าง ให้ดำเนินการขั้นตอนที่ 2 หากไม่มี ให้ไปที่ต้องรวบรวมข้อมูลการวินิจฉัย
com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler
มาดูตัวอย่างเพื่อให้เข้าใจวิธีแก้ปัญหาและปัญหานี้กัน
ตัวอย่างบันทึกตัวประมวลผลข้อความที่แสดงข้อยกเว้นที่มีข้อความ "ชื่อ KeyValueMap ไม่ถูกต้อง" ทำให้เกิดข้อผิดพลาดระหว่างการทำให้พร็อกซี API ใช้งานได้
2018-02-27 14:14:50,318 Apigee-Main-6 ERROR MESSAGING.RUNTIME - AbstractConfigurator.handleUpdate() : Fatal error deploying proxy: {} com.apigee.keyvaluemap.KeyValueMapApiException: KeyValueMap name is invalid at com.apigee.keyvaluemap.service.legacy.KeyValueMapServiceImpl.validateMapName(KeyValueMapServiceImpl.java:125) ~[keyvaluemap-1.0.0.jar:na] at com.apigee.keyvaluemap.service.legacy.KeyValueMapServiceImpl.createOrUpdateKeyValueMap(KeyValueMapServiceImpl.java:185) ~[keyvaluemap-1.0.0.jar:na] at com.apigee.steps.keyvaluemapoperations.KeyValueMapOperationsStepDefinition.digest(KeyValueMapOperationsStepDefinition.java:180) ~[keyvaluemap-operations-1.0.0.jar:na] at com.apigee.steps.keyvaluemapoperations.KeyValueMapOperationsStepDefinition.handleAdd(KeyValueMapOperationsStepDefinition.java:197) ~[keyvaluemap-operations-1.0.0.jar:na] at com.apigee.entities.AbstractConfigurator.handleUpdate(AbstractConfigurator.java:130) [config-entities-1.0.0.jar:na] at com.apigee.messaging.runtime.Application.handleUpdate(Application.java:229) [message-processor-1.0.0.jar:na] 2018-02-27 14:14:50,344 Apigee-Main-6 ERROR BOOTSTRAP - RuntimeConfigurationServiceImpl.dispatchToListeners() : RuntimeConfigurationServiceImpl.dispatchToListeners : Error occurred while dispatching the request DeployEvent{organization='myorg', application='CustomerAPI', applicationRevision='1', deploymentSpec=basepath=/;env=test;, deploymentID=null} to com.apigee.application.bootstrap.listeners.MessageProcessorBootstrapListener@5009d06e com.apigee.keyvaluemap.KeyValueMapApiException: KeyValueMap name is invalid at com.apigee.keyvaluemap.service.legacy.KeyValueMapServiceImpl.validateMapName(KeyValueMapServiceImpl.java:125) ~[keyvaluemap-1.0.0.jar:na] at com.apigee.keyvaluemap.service.legacy.KeyValueMapServiceImpl.createOrUpdateKeyValueMap(KeyValueMapServiceImpl.java:185) ~[keyvaluemap-1.0.0.jar:na] at com.apigee.steps.keyvaluemapoperations.KeyValueMapOperationsStepDefinition.digest(KeyValueMapOperationsStepDefinition.java:180) ~[keyvaluemap-operations-1.0.0.jar:na] at com.apigee.steps.keyvaluemapoperations.KeyValueMapOperationsStepDefinition.handleAdd(KeyValueMapOperationsStepDefinition.java:197) ~[keyvaluemap-operations-1.0.0.jar:na] at com.apigee.entities.AbstractConfigurator.handleUpdate(AbstractConfigurator.java:130) ~[config-entities-1.0.0.jar:na] at com.apigee.messaging.runtime.Application.handleUpdate(Application.java:229) ~[message-processor-1.0.0.jar:na]
ข้อยกเว้นที่สองข้างต้นระบุว่าเกิดข้อผิดพลาดในการติดตั้งใช้งานสำหรับพร็อกซี API: CustomerAPI การแก้ไข: 1.
เมื่อตรวจสอบสแต็กเทรซ คุณจะสังเกตเห็นว่ามีข้อผิดพลาดเกิดขึ้นขณะดำเนินการตามนโยบาย KeyValuMapOperatings
เมื่อตรวจสอบกลุ่มพร็อกซี API คุณจะพบว่ามีนโยบาย KeyValuMapEnforcements 1 รายการซึ่งมีโค้ดดังที่แสดงด้านล่าง
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Pulling-Keys" mapIdentifier=""> <DisplayName>Pulling Keys</DisplayName> <Properties/> <ExclusiveCache>false</ExclusiveCache>
ดังที่เห็นด้านบน mapIdentifier ซึ่งแสดงชื่อของ KeyValueMap มีสตริงว่าง ชื่อ KeyValueMap ต้องไม่ว่างเปล่า ซึ่งเป็นสาเหตุของข้อผิดพลาดในการทำให้ใช้งานได้
ความละเอียด
- แก้ไขนโยบาย KeyValueMapOperatings ให้มีชื่อที่ถูกต้องสำหรับ KeyValueMap
ในตัวอย่างข้างต้น เราแก้ไขปัญหาด้วยการแก้ไข KeyValueMapEnforcements ให้มีชื่อ KeyValueMap เป็น "MyKeyValueMap" ตามที่แสดงด้านล่าง
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Pulling-Keys" mapIdentifier="MyKeyValueMap"> <DisplayName>Pulling Keys</DisplayName> <Properties/> <ExclusiveCache>false</ExclusiveCache>
ต้องรวบรวมข้อมูลการวินิจฉัย
หากปัญหายังคงอยู่แม้ว่าจะทำตามคำแนะนำข้างต้นแล้ว โปรดรวบรวมข้อมูลการวินิจฉัยต่อไปนี้ โปรดติดต่อฝ่ายสนับสนุนของ Apigee Edge และแจ้งข้อมูลที่รวบรวมได้
เอาต์พุตของคำสั่ง
curl -v <management-server-host>:<port #>/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/deployments -u <user>
บันทึกตัวประมวลผลข้อความ
/opt/apigee/var/log/edge-message-processor/logs/system.log
รายละเอียดว่ามีการลองใช้ส่วนต่างๆ ใดใน Playbook นี้และข้อมูลเชิงลึกอื่นๆ ที่จะช่วยให้เราจัดการกับปัญหานี้ได้อย่างรวดเร็ว