คุณกำลังดูเอกสารประกอบ 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 ในนโยบาย Javacallout | ไม่มีคลาส Java จากไฟล์ JAR ที่นโยบาย Javaข้อความเสริม อ้างอิงอยู่ | ผู้ใช้ Edge Private Cloud |
มีการใช้โอเปอแรนด์ที่ไม่ถูกต้องในเงื่อนไขในโฟลว์เงื่อนไข | ตัวดำเนินการ/นิพจน์ที่ใช้ด้านใดด้านหนึ่งหรือทั้ง 2 ด้านของโอเปอเรเตอร์ในเงื่อนไขไม่ถูกต้อง | |
ชื่อโฮสต์ในนโยบายการบันทึกข้อความไม่ถูกต้อง | ชื่อโฮสต์ที่ใช้ในนโยบาย MessageLcking ไม่สามารถแก้ไขได้หรืออาจมีสัญลักษณ์พิเศษที่ไม่พึงประสงค์ | |
ชื่อ KeyValueMap ไม่ถูกต้อง | KeyValueMap ไม่ถูกต้องหรือว่างเปล่าในนโยบาย KeyValueMapOperations ในพร็อกซี 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 ในนโยบาย Javacallout
การวินิจฉัย
- ในบันทึกโปรแกรมประมวลผลข้อความ หากคุณเห็นข้อยกเว้นที่มีข้อความ "ไม่สามารถสร้างอินสแตนซ์ Javacallout 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>
ข้อความแสดงข้อผิดพลาดในข้อยกเว้นข้างต้นระบุว่าไม่สามารถสร้างอินสแตนซ์คลาส Javacallout
com.something.apigee.callout.crypto.main.SecretCallout
ได้ ข้อผิดพลาดนี้มักจะเกิดขึ้นเมื่อคลาสที่ระบุไม่พร้อมใช้งานในไฟล์ JAR ที่ระบุในนโยบาย Javacallout หรือไฟล์ 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
โปรดมาดูตัวอย่างเพื่อทำความเข้าใจวิธีวินิจฉัยปัญหานี้
ตัวอย่าง : Operand สำหรับ <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>
ในตัวอย่างนี้ คุณจะสังเกตได้ว่าไม่มีช่องว่างระหว่าง "หรือ" ตามด้วยเงื่อนไขถัดไป ดังนั้นเมื่อมีการแยกวิเคราะห์เงื่อนไขที่ 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>
ชื่อโฮสต์ในนโยบาย MessageLcking ไม่ถูกต้อง
การวินิจฉัย
ในบันทึกโปรแกรมประมวลผลข้อความ หากคุณเห็นข้อยกเว้นที่มีข้อความ "ReceiveName ไม่ถูกต้อง" ในระหว่างการติดตั้งใช้งานพร็อกซี 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 เป็นชื่อโฮสต์ที่ไม่ถูกต้อง
การตรวจสอบข้อยกเว้นในบันทึกของตัวประมวลผลข้อความจะแสดงอย่างละเอียดว่ามีอักขระพิเศษ "/" ที่ไม่ต้องการ ที่ส่วนท้ายของชื่อโฮสต์
'splunkprod.myorg.com/'.
สัญลักษณ์พิเศษที่ไม่ต้องการนี้คือสาเหตุของข้อผิดพลาดในการทำให้ใช้งานได้
ความละเอียด
- แก้ไขนโยบาย MessageLaking เพื่อนำสัญลักษณ์พิเศษที่ไม่ต้องการออกเพื่อแก้ปัญหา
- ในตัวอย่างข้างต้น สัญลักษณ์พิเศษ "/" ถูกนำออกจากนโยบาย MessageLนั้นๆ วิธีนี้แก้ปัญหาได้แล้ว
ตัวอย่างที่ 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"
ถ้าคุณอ่านบรรทัดที่มีข้อยกเว้นขึ้นไปอีก คุณจะเห็นว่าโปรแกรม Message Processor ไม่สามารถแปลค่าชื่อโฮสต์
'input-prd.cloud.splunk.com'
ที่ระบุในนโยบาย MessageLนั้นๆเพื่อยืนยันสิ่งนี้ คุณสามารถลอง telnet กับชื่อโฮสต์และพอร์ต # ที่ใช้ในนโยบายการบันทึกข้อความได้
ตรวจสอบนโยบาย MessageLcking ในการแก้ไขพร็อกซี API และยืนยันชื่อโฮสต์และ # พอร์ตที่ใช้ ในตัวอย่างด้านบน ชื่อพร็อกซี API: myapi, เวอร์ชัน: 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
ซึ่งพิสูจน์ให้เห็นอย่างชัดเจนว่าชื่อโฮสต์ไม่สามารถแก้ไขได้
ความละเอียด
- แก้ไขนโยบาย MessageLcking เพื่อใช้ชื่อโฮสต์ที่ถูกต้อง
หากยังคงพบปัญหา ให้ไปที่ต้องรวบรวมข้อมูลการวินิจฉัย
สาเหตุ: ชื่อ KeyValueMap ไม่ถูกต้อง
การวินิจฉัย
ในบันทึกโปรแกรมประมวลผลข้อความ หากคุณเห็นข้อยกเว้นที่มีข้อความ "ชื่อ KeyValueMap ไม่ถูกต้อง" ในระหว่างการติดตั้งใช้งานพร็อกซี API หรือขั้นตอนที่แชร์ดังที่แสดงด้านล่าง ให้ดำเนินการต่อไปยังขั้นตอนที่ 2 หากไม่ใช่ ให้ไปที่ต้องรวบรวมข้อมูลการวินิจฉัย
com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler
ลองดูตัวอย่างเพื่อทำความเข้าใจวิธีแก้ปัญหาและแก้ปัญหานี้
ตัวอย่างบันทึกสำหรับ Message Processor ที่แสดงข้อยกเว้นพร้อมข้อความ "KeyValueMap name ไม่ถูกต้อง" ทำให้เกิดข้อผิดพลาดระหว่างการทำให้พร็อกซี 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
เมื่อตรวจสอบสแต็กเทรซ คุณจะเห็นว่ามีข้อผิดพลาดเกิดขึ้นขณะบังคับใช้นโยบาย KeyValuMapOperations
เมื่อตรวจสอบแพ็กเกจพร็อกซี API แล้ว พบว่ามีนโยบาย KeyValuMapOperations นโยบายเดียว ซึ่งมีโค้ดดังต่อไปนี้
<?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 ต้องไม่ว่างเปล่า ซึ่งเป็นสาเหตุของข้อผิดพลาดในการทำให้ใช้งานได้
ความละเอียด
- แก้ไขนโยบาย KeyValueMapOperations ให้มีชื่อที่ถูกต้องสำหรับ KeyValueMap
ในตัวอย่างข้างต้น เราแก้ไขปัญหาด้วยการแก้ไข KeyValueMapOperations ให้ตั้งชื่อ 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 นี้มีการลองใช้และข้อมูลเชิงลึกอื่นๆ ที่จะช่วยให้เราแก้ไขปัญหานี้ได้อย่างรวดเร็ว