Code Monkey home page Code Monkey logo

Comments (20)

brandon-wonjune avatar brandon-wonjune commented on July 3, 2024

@kyungtaak
해당 상세페이지에서 사용되는 api에 대한 문의사항입니다.
기존에 타입 변경에 사용되던 api를 사용하여 테스트하였습니다.

api/datasources/{soruceId}/fields

필터링 설정과 제거에는 filtering = true | false로 하였더니 정상적으로 작동을 하였으나,
필터링 옵션에 대해서는 아래와 같은 오류가 발생합니다.

// params
[{
aggrType:"NONE"
alias:"PLUGIN_NAME"
biType:"DIMENSION"
filtering:true
filteringOptions:{allowSelectors: ["SINGLE_LIST"], type: "INCLUSION", defaultSelector: "SINGLE_LIST"}
filteringSeq:0
id:10037124
logicalType:"STRING"
name:"PLUGIN_NAME"
op:"replace"
role:"DIMENSION"
seq:0
type:"STRING"
}]
// error
com.metatron.discovery.common.exception.UnknownServerException: java.util.LinkedHashMap cannot be cast to java.lang.String
	at com.metatron.discovery.common.exception.GlobalExceptionHandler.handleAll(GlobalExceptionHandler.java:133)
	at sun.reflect.GeneratedMethodAccessor661.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
	at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:384)
	at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:59)
	at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:136)
	at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:76)
	at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1222)
	at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1034)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.metatron.discovery.common.web.CommonLocalVariableFilter.doFilter(CommonLocalVariableFilter.java:45)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.metatron.discovery.common.web.LogbackMdcFilter.doFilter(LogbackMdcFilter.java:39)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:176)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:167)
	at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:80)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.lang.String
	at com.metatron.discovery.domain.datasource.Field.updateField(Field.java:229)
	at com.metatron.discovery.domain.datasource.DataSourceController.patchFieldsInDataSource(DataSourceController.java:501)
	at com.metatron.discovery.domain.datasource.DataSourceController$$FastClassBySpringCGLIB$$c7954abd.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
	at com.metatron.discovery.domain.datasource.DataSourceController$$EnhancerBySpringCGLIB$$bbedd86e.patchFieldsInDataSource(<generated>)
	at sun.reflect.GeneratedMethodAccessor645.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
	... 86 more

from metatron-discovery.

kyungtaak avatar kyungtaak commented on July 3, 2024

@brandon-exntu 네 수정해놓겠습니다. f#9-add_filter_config 브렌치 활용 부탁드립니다.

from metatron-discovery.

kyungtaak avatar kyungtaak commented on July 3, 2024

@brandon-exntu
수정하였습니다.
일부 스펙변경이 있었습니다. (@eltriny 대시보드 구성시 영향도가 있다면 함께 변경 부탁드립니다.)

[{
	...,
    "filteringOptions": {
        "type": "TIME",                           // 기존 INTERVAL -> TIME 으로 변경
        "defaultSelector": "range",
        "allowSelectors": [
            "range",
            "relative"
        ]
    }
},
{
	...,
	"filteringOptions": {
        "type": "INCLUSION",
        "defaultSelector": "single_list",
        "allowSelectors": [
            "single_list",
            "single_combo"
        ]
    }
	
}]

from metatron-discovery.

brandon-wonjune avatar brandon-wonjune commented on July 3, 2024

@kyungtaak
확인하였습니다.
테스트한 결과 필터링 옵션은 추가가 되나 제거가 되지 않습니다.
추가된 필터링옵션에서 제거에 대한 파라메터는 아래와 같이 보냈습니다.

alias:"City"
filtering:true
filteringSeq:1
id:10037002
logicalType:"STRING"
name:"City"
op:"replace"
role:"DIMENSION"
seq:2
type:"STRING"

에러는 발생하지 않으나 필터링옵션 제거가 되지 않습니다.
아래는 변경을 요청한 컬럼에대한 조회 결과입니다.

alias:"City"
filtering:true
filteringOptions:{type: "INCLUSION", defaultSelector: "SINGLE_LIST", allowSelectors: ["SINGLE_LIST"]}
filteringSeq:1
id:10037002
logicalType:"STRING"
name:"City"
role:"DIMENSION"
seq:2
type:"STRING"

from metatron-discovery.

kyungtaak avatar kyungtaak commented on July 3, 2024

filteringOption 을 제거한다는것은 필터 설정을 하지 않겠다는 것으로 인식하였습니다. 따라서 filtering 속성을 false 로 주게 되면 filtering 관련 추가 속성들이 모두 null 처리가 되도록 수정하였으니, 추가/제거시 filtering 속성을 기준으로 작업해주세요.

from metatron-discovery.

brandon-wonjune avatar brandon-wonjune commented on July 3, 2024

@kyungtaak
기획 쪽에서 전달 받은 내용입니다.
요청사항에 의해 filteringOption을 설정하는 체크박스를 hide 시켜놓겠습니다.

해당 체크박스는 필수필터를 대시보드에서 사용할 때 필터링 선택 범위를 제한할 수 있는 옵션입니다. 대시보드 필터링 설정 화면에서 리스트 타입일 경우, 체크를 하면 ‘다중’ 선택이 비활성 됩니다. 시간 타입일 경우, 체크를 하면 ‘전체기간’이 비활성 됩니다.
그런데, 지금 싱글 선택일때도 (All) 이 목록으로 추가되어 선택 범위를 제한 하는 것이 의미가 없어졌고, 시간 필터의 UI에 대한 이슈도 있기 때문에 기획 재검토가 필요해 보입니다.
관련 이슈가 처리될 때까지 기능을 잠시 막아주시는 것이 좋을 것 같습니다

from metatron-discovery.

kyungtaak avatar kyungtaak commented on July 3, 2024

@metatron-app/design linked datasource 관련 고려 부탁드립니다.

from metatron-discovery.

minjung-cho avatar minjung-cho commented on July 3, 2024

@AnnieHwang 링크드일때 컬럼 디테일 탭에 Statistics, Histogram, Value list, Convariance ranking 을 막아주면 될까요?
참고로, 수집형 일때 기획서 첨부합니다.
2018-09-11 11 33 59
2018-09-11 11 33 50

from metatron-discovery.

AnnieHwang avatar AnnieHwang commented on July 3, 2024

@minjung-cho 다른건 다 막아주는게 맞을것 같고요. Value list는 혹시 Histogram하단에 나오는 value와 covariance값을 말씀하시는건가요? 진짜 Value list를 말씀하시는건가요? @kyungtaak 저는 링크드 일때도 실제 Value List가 나와야 할 것 같은데 (에센셜필터 등을 할때 사용하려고요) 혹시 개발이 가능할까요?

from metatron-discovery.

minjung-cho avatar minjung-cho commented on July 3, 2024

@AnnieHwang value list는 차원값>시간이외 의 Statistics 하단의 value count 값들이요~

from metatron-discovery.

kyungtaak avatar kyungtaak commented on July 3, 2024

@AnnieHwang @minjung-cho
JDBC 상에서 사실 Druid 내에서 와 같이 value list 를 포함하여 통계정보를 내는것은 비용이 큽니다.
따라서 두가지 안을 제안드리고 싶은데요. 전 1안으로 심플(?) 하게 갔으면 하는데요. 검토해주세요.

  1. 통계 정보 제거
  2. 통계정보는 접어두고, 만약 보고 싶다면 로드 버튼을 활성화하여 로딩하여 통계정보 확인

from metatron-discovery.

AnnieHwang avatar AnnieHwang commented on July 3, 2024

@kyungtaak 1번으로 '통계 정보 제거'로 형태로 나오는걸로 결정하였습니다. 감사합니다.

from metatron-discovery.

minjung-cho avatar minjung-cho commented on July 3, 2024

@brandon-wonjune 링크드 타입인 경우, Statistics, Histogram, Value list, Convariance ranking 은 안보이면 됩니다. 또한, Monitoring 탭도 안보여야 합니다.(#155)

from metatron-discovery.

minjung-cho avatar minjung-cho commented on July 3, 2024

기획서 V.1.30에 반영함

from metatron-discovery.

brandon-wonjune avatar brandon-wonjune commented on July 3, 2024

@minjung-cho Linked 타입인경우 Statistics, Histogram, Value list, Convariance ranking를 숨기도록 처리하였습니다.
모니터링 탭의 경우 #155 에서 처리하였습니다.
https://tde.sktelecom.com/pms/browse/METATRON-1417 도 또한 같이 처리하였습니다.

from metatron-discovery.

kyungtaak avatar kyungtaak commented on July 3, 2024

@brandon-wonjune 수정 완료후 소스코드에 충돌 이슈가 있다면, #155 이슈와 묶어서 PR 이슈로 올려주세요.

from metatron-discovery.

brandon-wonjune avatar brandon-wonjune commented on July 3, 2024

@kyungtaak 문의사항이 있습니다.
저번에 브랜치를 날렸을때 파일을 백업한것을 다시 커밋했는데
Field.java 파일에서

 public BIType getBiType() {
    if(role == null) {
      return null;
    }
    return BIType.valueOf(role.name());
  }

이 부분에 @JsonIgnore@Deprecated 에 추가되는게 맞나요?
만약 추가되는게 맞다면 차트쪽에서 문제가 생길 수 있습니다.

from metatron-discovery.

kyungtaak avatar kyungtaak commented on July 3, 2024

@brandon-wonjune 현재 BIType 은 1.0 에서 사용하던 필드로 Deprecated 시키고 이는 "role" 이라는 속성으로 변경될 예정입니다.
@eltriny @dave-taeho 아직도 BiType을 쓰는 곳이 있나요? 확인해주시고요. 아직 사용한다면 임시로 @JsonIgore 어노테이션을 추가해서 올려주세요.

from metatron-discovery.

brandon-wonjune avatar brandon-wonjune commented on July 3, 2024

@kyungtaak 해당 작업을 마무리 했는데 현재 로컬에서 테스트 중 입니다.
그런데 연결형 데이터소스를 이용한 적재가 되지 않고 있습니다.
그로인해 필수필터에 대한 확인은 로컬에서 하지 못하는 상태입니다.
혹시 확인할 수 있는 다른 방법이 있을까요?

from metatron-discovery.

ufoscw avatar ufoscw commented on July 3, 2024

@brandon-wonjune
우선 PR 오픈 해주시고 testbed에서 확인 하는게 좋을것 같습니다.

from metatron-discovery.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.